抛出私有异常是否有意义?

我希望在我的类不变量无效的情况下抛出运行时异常。由于这是一个编程错误(类似于NullPointerException),客户端不应该捕获该异常。 异常类是应该声明为私有还是公共(或其他)?
class Foo
{
    // ...

    private static class InvariantsViolated
    {
        // ...
    }
}
是否有关于自定义运行时异常和可见性的指南?     
已邀请:
除非您希望以不同的方式捕获此异常,否则您可以考虑使用现有异常。如果预计不会被捕获,我认为不需要自定义异常。您可以重复使用的一些例外情况 AssertionError - 对我而言,这意味着存在不可恢复的不确定类型的编程错误。 IllegalArgumentException - 对我来说,这意味着只有该方法的参数无效。 IllegalStateException - 对我来说,这意味着对象的状态(例如值的组合)对此操作无效。 如果您需要自定义异常,可以考虑扩展这些异常,或者使用扩展这些异常的异常之一。     
我相信,为了
throw
任何东西,该对象必须实现
Throwable
接口,这意味着它必须是
Error
Exception
。既然你不希望你的客户永远抓住那个事件,你应该使用
Error
。从
Error
文件:   Error是Throwable的子类   这表明存在严重的问题   合理的申请不应该尝试   去抓。 这样你可以避免一些程序员倾向于使用的可怕的
Exception
catch-alls - 大多数时候这些程序员甚至根本不考虑捕获一个
Error
...     

要回复问题请先登录注册