如果我运行以下代码:
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/