java - 在 java 中扩展 Exception/RunTimeException?

标签 java exception

我有以下类(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 客户端代码从它们中恢复或以任何方式处理它们。此类问题包括算术异常,例如除以零;指针异常,例如试图通过空引用访问对象;和索引异常,例如尝试通过太大或太小的索引访问数组元素。

运行时异常可以在程序的任何地方发生,并且在一个典型的程序中它们可能非常多。必须在每个方法声明中添加运行时异常会降低程序的清晰度。因此,编译器不需要您捕获或指定运行时异常(尽管您可以)。

来源/延伸阅读: Unchecked Exceptions - The Controversy

关于java - 在 java 中扩展 Exception/RunTimeException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19857008/

相关文章:

java - 使用编程资源注册的 Jersey 异步请求处理

java - 为什么 Kotlin 不明确要求 try 和 catch

java - 抛出异常的记录方法

java - Java 应用程序中的 PKIX 路径构建失败

c++ - 正确使用cpp中的定义宏替换函数的名称

delphi - 如何只接受编辑控件中的数字?

java - UIDefaults.getUI() 失败 : error when loading a JFrame into another project

java - JCheckbox 被选择时不显示标签中的文本

java - 防止 Tomcat 覆盖 Controller 建议返回的错误响应

Java 编译器 super() 构造函数将军