我希望在我的类不变量无效的情况下抛出运行时异常。由于这是一个编程错误(类似于NullPointerException),客户端不应该捕获该异常。
是否应将异常类声明为私有或公共(或其他)?
class Foo
{
// ...
private static class InvariantsViolated
{
// ...
}
}
是否有关于自定义运行时异常和可见性的指南?
答案 0 :(得分:3)
除非您希望以不同的方式捕获此异常,否则您可以考虑使用现有异常。如果预计不会被捕获,我认为不需要自定义异常。您可以重复使用的一些例外
如果您想要自定义异常,可以考虑扩展这些异常,或者使用扩展这些异常的例外之一。
答案 1 :(得分:0)
我认为,为了throw
任何内容,该对象必须实现Throwable
接口,这意味着它必须是Error
或Exception
。由于您不希望客户端永远捕获该事件,因此您应该使用Error
。来自Error
documentation:
错误是Throwable的子类 这表明存在严重的问题 合理的申请不应该尝试 赶上。
这样你可以避免一些程序员倾向于使用的可怕的Exception
一切 - 这些程序员大多数时候甚至根本不考虑捕获Error
...