java中的try中的return与finally执行顺序关系

来源:互联网 发布:软件开发人员工资标准 编辑:程序博客网 时间:2024/05/21 14:58
    try {}里有一个 return 语句,那么紧跟在这个 try 后的 finally {} 里的 code 会不会被执行, 什么时候被执行,在 return 前还是后?也许你的答案是在 return 之前,但往更细地说,我的答案是在 return 中间执行。
 
在TestTryReturn这个例子中的执行顺序为:用debug进行调试,会发现,先调用的是return,再调用finally,最后在调用return
public class TestTryReturn {public static void main(String[] args) {System.out.println(new TestTryReturn().testreturn());}static int testreturn(){int x=99;try{return x;}finally{System.out.println(x+1);}}}

 

Return 并不是让函数马上返回,而是 return 语句执行后,将把返回结果放置进函数栈中,此时函数并不是马上返回,它要执行 finally 语句后才真正开始返回。


在TestTryReturn这个例子中的执行顺序为在TestTryReturn这个例子中的执行顺序为在TestTryReturn这个例子中的执行顺序为在TestTryReturn这个例子中的执行顺序为:先执行test中的return中的func1(),在执行finally中的return中func2()

public class Ttest {public static void main(String[] args) {System.out.println(new Ttest().test());}int test() {try {return func1();} finally {return func2();}}int func1() {System.out.println("func1");return 1;}int func2() {System.out.println("func2");return 2;}}


结论:finally 中的代码比 return 和 break 语句后执行

原创粉丝点击