【发布时间】:2017-11-05 04:21:41
【问题描述】:
我遇到了这个问题,但我无法理解它给出输出的原因。
程序是:
public static String method(){
String s = new String();
try
{
s = "return value from try block";
return s;
}
catch (Exception e)
{
s = s + "return value from catch block";
return s;
}
finally
{
s = s + "return value from finally block";
}
}
输出是:
try 块的返回值
现在,我对其进行了调试,try 块中return s 语句中s 的值在returned from finally block 之后是return value from try block、return value from catch block。
输出仍然是:
try 块的返回值
谁能解释一下这种行为?
【问题讨论】:
-
我想你会在这里找到更多的澄清Try-catch-finally-return clarification - Stack Overflow
-
答案来自 oracle 文档:“finally 块总是在 try 块退出时执行。这确保了 finally 块即使发生意外异常也会执行。”检查此参考:docs.oracle.com/javase/tutorial/essential/exceptions/…