Java:初始化错误的恰当例外

Ada*_*tan 30 java error-handling initialization exception

当静态工厂方法无法初始化新对象时,我应该抛出哪个异常?我更喜欢提出一个有意义的例外而不是回归null.

Edw*_*uck 39

如果由于数据不足而在工厂中抛出异常,我想抛出IllegalStateException类似于"无法构造X,没有设置Y"的描述.

如果由于数据冲突而在工厂中抛出异常,我想抛出 IllegalStateException类似于"无法构造X,Y与Z冲突"的描述.

如果由于错误(或无意义)值而在工厂中抛出异常,我喜欢抛出IllegalArgumentException类似于"Y不能为A"的描述.

如果由于缺少值而在Factory中抛出异常,我想抛出IllegalArgumentException类似于"Y不能为null"的描述.

最后的偏好取决于一些争论.有些人认为扔一个可能会更好NullPointerException; 在我的情况下,我们不惜一切代价避免使用它们,因为许多客户往往不会读取异常消息(并假设NullPointerException意味着编码错误).

无论如何,您应该提供一个好的,具体的消息,说明抛出异常的原因,以减轻您在未来几个月内发现异常的未来支持成本.