在私有实用程序类构造函数中首选使用的Throwable是什么?


问题内容

《有效的Java(第二版)》第4项讨论了如何使用私有构造函数强制执行非实例性。这是本书中的代码示例:

public final class UtilityClass {
    private UtilityClass() {
        throw new AssertionError();
    }
}

但是,AssertionError似乎并没有正确的选择。什么都没有被“断言”,这就是API定义使用AssertionError的方式

Throwable在这种情况下通常有什么不同吗?通常只会给将军Exception传达信息吗?还是为此编写一个习惯Exception

这是非常琐碎的,但是从样式和标准的角度来看,我想我只是对它感到好奇。


问题答案:

有一个断言:“我断言永远不会调用此构造函数”。因此,的确AssertionError是正确的。