我有以下类(class)。
public class ValidationException extends RuntimeException {
}
和
public class ValidationException extends Exception {
}
我对自定义异常何时应该扩展 RunTimeException
以及何时必须扩展 Exception
感到困惑。你能解释一下直接扩展 RunTimeException
有什么缺点吗?
谢谢!
最佳答案
RuntimeException are unchecked while Exception are checked (calling code must handle them).
如果您想要取消选中自定义异常,则应扩展 RuntimeException
,否则使用 Exception
扩展它。
对于未经检查的异常,调用代码方法不需要在其 throws 子句中声明 RuntimeException
的任何子类,这些子类可能在方法执行期间被抛出但未被捕获。
由于调用方法可能无法处理`RuntimeException`,因此需要在抛出RuntimeException时要小心。
运行时异常表示由编程问题引起的问题,因此,不能合理地期望 API 客户端代码从它们中恢复或以任何方式处理它们。此类问题包括算术异常,例如除以零;指针异常,例如试图通过空引用访问对象;和索引异常,例如尝试通过太大或太小的索引访问数组元素。
运行时异常可以在程序的任何地方发生,并且在一个典型的程序中它们可能非常多。必须在每个方法声明中添加运行时异常会降低程序的清晰度。因此,编译器不需要您捕获或指定运行时异常(尽管您可以)。
关于java - 在 java 中扩展 Exception/RunTimeException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19857008/