当前位置: 首页 > 面试题库 >

为什么我们不必将try-catch添加到RuntimeException?

段干安和
2023-03-14
问题内容

我想问为什么我们不必在一段RuntimeException时间内添加try-catch块,而应该在其他例外情况下这样做呢?

我的意思是:

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

编辑:当我说:throw new RuntimeException();很明显会有例外发生时,为什么编译器不禁止这样做呢?


问题答案:

那是因为这是一个 未经检查的
异常。不需要显式声明或捕获它。另请参阅有关该主题的Sun教程。

更新:
通常,您只应抛出一个RuntimeException(最好是javadoc中列出的其子类之一)以表明调用者做错了。即传递一个null参数(然后throw
NullPointerException),或者一个非法参数(然后throw
IllegalArgumentException),或者在错误的时刻/状态(然后throw
IllegalStateException)调用该方法,等等。调用者应该修复其代码以避免这种情况。例如,预先检查参数是否为null,或者参数格式/语法是否正确,或确保在正确的时间调用该方法。

如果有应该抛出一个运行时异常而无法使用其指定的子类具体的情况,那么你应该把它扩大,并在新的异常的Javadoc正确记录,并在调用的方法,如ConfigurationException extends RuntimeException为案件在使用之前,调用代码未正确配置应用程序/
API。这应该向最终用户(另一个开发人员)发出足够的信号,以采取相应的措施。

简而言之:RuntimeExceptions应确定由代码流或配置错误引起的可程序恢复的问题(请参阅:开发人员的错误)。已检查Exceptions应确定由程序无法控制的意外情况(例如数据库关闭,文件I
/
O错误,最终用户输入错误等)引起的可程序恢复的问题。Errors应该识别程序上无法恢复的问题(例如,内存不足,初始化程序内部的异常等)。



 类似资料:
  • 我正尝试在出现连接错误时添加一个控件。我的目的是通过捕捉异常来阻止程序抛出异常。 但它会在控制台中打印: 抱歉,如果我打印了太多的StackTrace... 我想知道,如果我不打印出stacktrace,我如何使异常消失?谢谢:)

  • 我有一个方法,它使用< code>java.util.Date和< code>java.util.Calendar对象为我提供时区的当前时间,我的一个同事建议添加try catch with < code > Exception e to catch。但是当我在google上搜索这些类的内置方法抛出的异常时,我没有发现任何异常。 我还需要用try和catch来包装代码吗???块是否需要try-ca

  • 问题内容: 我对git和詹金斯都很陌生。 我将密钥添加到bitbucket和本地计算机中时: 我可以克隆。 但是,当我将相同的url()添加到Jenkins存储库url时,出现以下错误: 问题答案: 您还需要为Jenkins用户设置ssh密钥。 通常的想法是,您登录到Jenkins框,并成为“ jenkins”用户。您可以为您的Jenkins用户打电话,所以请确保使用正确的名称。一旦成为Jenki

  • 我正在尝试捕获caller方法中的IllegalAccessException。但它抓不到它。而是给出了一个错误。

  • 例如: 将在Kotlin中编译,但在Java中会出现编译器错误。为什么?