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