Java try-catch-finally block

标签 java try-catch

如果我运行以下代码:

try{
   return false;
} catch(Exception e){
       e.printStackTrace();
}
finally{
   return true;
}

为什么返回 true

最佳答案

来自Java Language Specification section 14.20.2

  • 如果 try block 的执行由于任何其他原因 R 突然完成,则执行 finally block ,然后有一个选择:
    • 如果 finally block 正常完成,则 try 语句会突然完成,原因为 R。
    • 如果 finally block 由于 S 的原因突然完成,则 try 语句由于 S 的原因突然完成(并且丢弃原因 R)

(我的斜体)。 return 是一种“突然完成”,换句话说,finally 中的 return 会否决 try 中的 return

关于Java try-catch-finally block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17323572/

相关文章:

c# - try catch 验证空文本框

javascript - 在生产中在 catch block 中放入什么

groovy - 编译时使用groovy方法进行NPE

java - 如何使用正则表达式和 split 将字符串分成 n 个单词分组的部分?

java - Jersey RESTful 服务 500 错误(请求为空)

java - 每个级别定义 1 个 logback 文件

ruby - 救援与捕捉同时进行

Java 序列化为数组

Java 使用 BufferedImage 从 URL 获取图像扩展名/类型

Java - Try/Catch - 如果成功则访问 try block 中的变量