什么是断言错误?在哪种情况下,我应该从自己的代码中丢弃它?
2022-08-31 12:16:12
在“Effective Java,第2版”一书的第2项中,有这样一段代码,其中作者希望禁止对对象进行空初始化。
class Example {
private Example() {
throw new AssertionError();
}
}
抛出的异常类型,是我在这里感到困惑的地方。
我不明白是否只是因为没有更合适的错误而抛出,或者因为它应该是这样。AssertionError
据我所知,当语句失败时,框架会引发此错误。另外,在javadoc中,它只是写的assert
[断言错误是]抛出以指示断言已失败。
但我没有看到任何断言(真假陈述)在这里被违反。当然,“你不能实例化这个类的一个项目”的说法已经被违反了,但如果这是这背后的逻辑,那么我们都应该到处扔s,这显然不是发生的事情。AssertionError
FWIW,我会抛出一个
new IllegalStateException("Must not instantiate an element of this class")
这有什么问题吗?在哪种情况下,我应该在自己的代码中抛出一个?AssertionError
抱歉,如果这只是一个微妙的疑问,但我在我的代码中经常使用这种模式,我想确保我正在做正确的事情。