java中的try中的return和finally的执行顺序问题

来源:互联网 发布:smplayer linux 编辑:程序博客网 时间:2024/06/03 19:03

 

在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 语句后执行

原创粉丝点击