java - java中的try/catch block 返回与finally子句

标签 java return try-catch try-catch-finally

给定 java 中的以下 try/catch block :

try{
  return;
}
catch(SomeException e){
  System.out.println(e);
}
finally{
  System.out.println("This is the finally block");
}

根据这篇文章:“Does finally always execute in Java?”我可以看到程序的输出将是“这是最后一个 block ”。但是,我不知道这怎么可能,因为 print 语句前面有一个 return...

我怀疑这种行为与线程有关,但我不确定。请赐教。谢谢。

最佳答案

finallyreturn 语句之前执行。由于 java 规则 finally 将始终被执行,除非 JVM 崩溃或调用 System.exit()

Java语言规范明确提到了finally在不同条件下的执行:

http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.20.2

关于java - java中的try/catch block 返回与finally子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19899155/

相关文章:

java - 在 try block 中分配最终变量

Python:当try block 失败时仅运行异常 block

javascript - 使用 angularjs 和 spring 获取

java - 返回哪个 HTTP 响应状态

javascript - 为什么使用这个方法来返回一个函数或值?

Java - 从方法返回一个数组到main

java - 按 ID 对 JSON 数组排序

java - 即使路径/文件存在于 webapp 中,getRequestDispatcher 也返回 null

c++ - 在 C++ 中正确定义和返回函数数组

java - Java中有没有检测到没有输入的异常?