【问题标题】:JAVA: If an error is caught, is the code in the try block that apperes after the error executed when the error is handled?JAVA:如果捕获到错误,处理错误时是否执行了错误后出现的try块中的代码?
【发布时间】:2016-05-01 19:13:03
【问题描述】:
1 try{
2    this line of code throws exceptions;
3    is this line of code ever executed?; 
4 catch(MadeUpException ex){1
5    something happens in response to the exception!;
6 }

如果第一行代码抛出异常并且在处理异常时程序没有被杀死,是否执行第三行代码。

【问题讨论】:

  • 。第 3 行将被跳过。你可以自己尝试一下。
  • ^^^这是一个简单的测试。只需编写一个类并执行它:/

标签: java error-handling try-catch


【解决方案1】:

在 JAVA8 规范的11.3. Run-Time Handling of an Exception 部分中说:

抛出异常时发生的控制转移导致 表达式(第 15.6 节)和语句(第 14.1 节)的突然完成,直到 遇到可以处理异常的 catch 子句;执行 然后继续执行该 catch 子句的块。 代码 导致异常的永远不会恢复

因此,正如其他人之前注意到的那样,第 3 行被跳过。另请注意,如果抛出的异常不是 MadeUpException,那么甚至会跳过第 5 行!。

【讨论】:

    【解决方案2】:

    没有。一旦抛出异常,try 块就会被中断。

    【讨论】:

      【解决方案3】:

      除非您修复 catch 块中的错误并重试,否则代码不会运行。它像休息一样立即停止;抛出异常时声明。

      【讨论】:

        猜你喜欢
        • 2018-09-24
        • 1970-01-01
        • 2018-12-05
        • 2020-07-11
        • 2021-07-24
        • 2019-05-19
        • 2021-06-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多