构造函数可以引发运行时异常吗?

2022-09-02 12:42:18

当检查的异常从构造函数中的方法引发,构造函数无法处理时,如果您确定应用程序无法处理它并且在没有构造对象的情况下将无用,是否可以捕获它们并将其作为运行时异常抛出?


答案 1

是的。这是标准做法。

Effective Java 中,第 2 版中,这在第 61 项“抛出适合于抽象的异常”中进行了介绍。无论结果是选中还是取消选中,Effective Java 在第 58 项“对可恢复条件使用已检查的异常,对编程错误使用运行时异常”中也对此进行了介绍。

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

当由于另一个异常而引发异常时,最好确保在新异常上设置 。cause


答案 2

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


推荐