class Example {
private Example() {
throw new AssertionError();
}
}
这里让我困惑的是抛出异常的类型。
我不明白 AssertionError
是仅仅因为缺少更合适的错误而被抛出,还是应该是这样的。
据我所知,当一个 assert
语句失败时,框架会抛出这个错误。此外,在 javadoc 中只是简单地写道:
[AssertionError 是] 抛出以表示断言失败。
但我没有看到任何断言(真假语句)在此被违反。当然,“您不应该实例化此类的对象”语句已经被违反了,但如果这是其背后的逻辑,那么我们应该随处抛出 AssertionError
,显然这并不是发生的情况。
顺便说一下,我会直接抛出
new IllegalStateException("Must not instantiate an element of this class")
那里有什么问题吗?在哪种情况下我应该在自己的代码中引发AssertionError
?
如果这只是一个微妙的疑问,我很抱歉,但我在我的代码中经常使用这种模式,我想确保我做得对。
AssertionError
的几种不同用例。我鼓励任何对这种模式感到惊讶的人阅读这个页面。 - dimo414