构造函数可以抛出运行时异常吗?

ins*_*pid 18 java error-handling exception

当构造函数无法处理的构造函数中的方法抛出被检查的异常时,如果你确定应用程序无法处理它并且在没有对象的情况下将无用而将它们作为运行时异常抛出它们就可以了.建造?

Lau*_*ves 12

是.这是标准做法.

Effective Java,2nd Ed.第61项"抛出适用于抽象的例外"涵盖了这一点.是否检查或取消选中生成的异常,还有第58项中的Effective Java,"对可恢复条件使用已检查的异常和编程错误的运行时异常".

这是一个构造函数而不是一个普通的方法并不是一个真正的问题.(事实上​​,构造函数可以说有更多自由,因为它们不受超级界面的约束.)

由于另一个异常而抛出异常时,最好确保设置cause新的异常.


Rob*_*bin 11

是的,当他们调用其他方法时,这在许多构造函数中是不可避免的,因为它们总是有可能已经抛出未经检查的异常.