gpt4 book ai didi

java - 为什么我们不必在 RuntimeException 中添加 try-catch?

转载 作者:IT老高 更新时间:2023-10-28 20:57:41 25 4
gpt4 key购买 nike

我想问为什么我们不必将 try-catch block 添加到 RuntimeException 而我们应该对其他异常执行此操作?

我的意思是:

public class Main {
public static void main(String[] args) {
throw new RuntimeException();
}
}

编辑:当我说: throw new RuntimeException(); 很明显会有异常发生,那么为什么编译器不禁止呢?

最佳答案

那是因为它是一个未经检查的异常。它不需要显式声明或捕获。另见 Java tutorial on the subject .

一般来说,您应该只抛出一个RuntimeException(最好是javadoc 中列出的"Direct Known Subclasses" 之一)来表示调用者做错了。例如。当调用者错误地传递 null 参数(然后抛出 NullPointerException )或非法参数(然后抛出 IllegalArgumentException ),或者调用者在错误的时刻/状态调用方法时(然后抛出 IllegalStateException ),等等。调用者应该修复他们的代码以避免这种情况。例如。预先检查参数是否不为空,或者参数的格式/语法是否正确,或者确保在正确的时刻调用该方法。

如果存在应该引发运行时异常的特定情况并且您不能使用它的特定子类之一,那么您应该扩展它并在新异常的 javadoc 和调用方法中正确记录它,例如ConfigurationException extends RuntimeException 适用于调用代码在使用前未正确配置应用程序/API 的情况。这应该足以向最终用户(其他开发人员)发出信号,让他们采取相应的行动。

简而言之:

  • RuntimeExceptions应识别由代码开发人员控制下的代码流或配置错误引起的可通过编程方式恢复的问题(阅读:开发人员的错误)。
  • 已检查 Exceptions应识别由代码开发人员无法控制的意外情况(例如数据库关闭、文件 I/O 错误、最终用户输入错误等)导致的可通过编程恢复的问题。
  • Errors应识别代码开发人员无法控制的程序无法恢复的问题(例如内存不足、初始化程序内的异常等)。

关于java - 为什么我们不必在 RuntimeException 中添加 try-catch?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2750638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com