finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
执行下面的代码:
public class TestReturn {
public String message() {
System.out.println("returned start");
return "return";
}
public String testFinal() {
try {
return message();
} catch (Exception e) {
e.printStackTrace();
return "exception";
} finally {
System.out.println("do finally");
// return "finally"; -----1
}
}
public static void main(String[] args) {
TestReturn test = new TestReturn();
System.out.println( test.testFinal());
}
}
执行结果为:
returned start
do finally
return
把代码中红色那行注释去掉 执行结果为:
returned start
do finally
finally
通过这个例子可以发现
try中的return语句调用的函数先于finally中调用的函数执行,也就是说return语句先执行,finally语句后执行。Return并不是让函数马上返回,而是return语句执行后,将把返回结果放置进函数栈中,此时函数并不是马上返回,它要执行finally语句后才真正开始返回,而在finally如果有return那么就返回finnally的值。
分享到:
相关推荐
在这个例子中,即使`__try`块内的代码提前退出(例如通过`return`),`__finally`块中的代码仍然会被执行,从而避免了内存泄漏的问题。 #### 五、深入分析 要深入理解终止处理程序的工作原理,我们需要了解以下几个...
第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 第二十八,编程题: 用最有效率的方法算出2乘以8等於几? 第二十九,两个...
38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 27 39、下面的程序代码输出的结果是多少? 28 40、final, finally, finalize的区别。 30 ...
38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 25 39、下面的程序代码输出的结果是多少? 25 40、final, finally, finalize的区别。 27 ...
21、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 10 22、我们在web 应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,...
27. try {}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的代码会不会被执行,什么时候被执行,在 return 前还是后? finally {}里的代码总是会被执行,不管 try 语句中是否有 return 语句。finally...
43.try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 答:会执行,在return前执行。 44.两个对象值相同(x.equals(y) == true),但却可有不同...
#### 第二十七,try{} 里有一个 return 语句,那么紧跟在这个 try 后的 finally{} 里的 code 会不会被执行,什么时候被执行,在 return 前还是后? - `finally`块中的代码一定会被执行,即使`try`块中有`return`...
第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 第二十八,编程题:用最有效率的方法算出2乘以8等於几? 有C背景的程序员...
38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 39、下面的程序代码输出的结果是多少? 40、final, finally, finalize的区别。 41、...
#### try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后 - `finally`块中的代码总会被执行,即使`try`块中有`return`语句。`finally`块会在`return`...
38. try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后? finally块中的代码总是会被执行,无论try块中是否有return语句,并且总是会在return执行前...
try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? `finally`块中的代码总是会被执行,无论`try`块中是否发生异常或包含`return`语句。如果`...
try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?** 会执行`finally`块中的代码。无论`try`块中是否有`return`,`finally`块总是会被执行,并且...
try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后? `finally`块中的代码总是会被执行,即使`try`块中有`return`语句。`finally`块中的代码在`...
try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后? `finally`块中的代码总是会执行,即使在`try`或`catch`块中有`return`语句。`finally`块在`...
try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?** 会执行`finally`块中的代码。如果`finally`中有`return`,那么它的返回值会覆盖`try`块中的...
try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后? `finally`块总是会执行,即使`try`块中有`return`语句。执行顺序是先执行`finally`块,再返回...