Java:尝试执行所有行,还是跳转到catch?

时间:2014-06-28 14:06:47

标签: java try-catch order-of-execution

我想知道java try-catch语句的执行路径,但无法找到有关以下情况的详细信息。

如果我有如下声明:

try {

  // Make a call that will throw an exception
  thisWillFail();

  // Other calls below:
  willThisExecute();

} catch (Exception exception) {
  // Catch the exception
}

在移动到catch之前,thisWillFail()下面的行是否会执行,或者一旦抛出异常,try语句的执行是否会跳转到catch?

换句话说,假设调用'a'不会在try语句中抛出异常,是否可以安全地假设调用'a'后调用'b'?#/ p>

由于

4 个答案:

答案 0 :(得分:9)

不,thisWillFail()下面的行不会执行。执行将转移到catch块。

答案 1 :(得分:4)

如果try子句中包含的任何子句生成错误,则将执行catch子句中的代码(对应于该错误 - 您可以在一次尝试中使用多个catch)。没有办法提前知道某个特定子句是否会失败,只是在错误发生后尝试恢复。

换句话说,只要thisWillFail()函数抛出异常,就会执行catch子句,从而绕过willThisExecute()函数。

答案 2 :(得分:1)

为什么不亲自测试一下?

抛出异常后,将放弃try块并在catch/finally语句处继续执行。

答案 3 :(得分:0)

它不会在该try块中执行任何进一步的指令,它将跳转到catch块并执行catch块。之后它将最终执行(记住最后将在每种情况下都执行是否有任何异常)。在这里进一步阅读是一篇很好的文章行([http://tutorials.jenkov.com/java-exception-handling/basic-try-catch-finally.html]