《Effective Java, 2nd edition》一书的第 2 点有这个代码片段,作者希望防止空对象初始化。
class Example {
private Example() {
throw new AssertionError();
}
}
我对抛出的异常类型感到困惑。
我不明白它为什么会兴奋AssertionError。无论是因为缺少更合适的异常类型,还是因为它应该如此简单。
据我了解,验证失败时会引发此异常assert。同样在javadoc中它只是说
[An AssertionError is] 抛出以指示断言失败。
但我没有看到这里执行任何断言(检查真假断言)。当然,“你不能实例化这个类的元素”这句话已经被违反了,但是按照这个逻辑,我们都应该AssertionError到处 raise,这显然不是我们正在做的。
不管需要什么,我都会让你兴奋
new IllegalStateException("Must not instantiate an element of this class")
它有什么问题?我什么时候应该AssertionError在本机代码中提出?
抱歉,我只是有点怀疑,因为我在自己的代码中经常使用这种模式,我想确保我做的一切都是正确的。
doplumi翻译的问题。
AssertionError关键是发生了一些开发人员认为不可能的事情。因此,如果发生
AssertionError,它是编程错误的明显迹象亨利回答的翻译。