谈论try,catch,语句中的return语句与后面的finally中语句谁先执行的问题

xiaoxiao2021-02-28  113

文章分析来自面试习题集;

1.先看下面程序会输出什么

public class Testus { public int test(){ int a=9; int b=0; try{ return 1; }catch(Exception e){ }finally{ return 2; } } public static void main(String args[]){ System.out.println(new Testus().test()); } }

上面的输出是2,没错所以这里可以想象主函数中有一个存放结果集的罐子,并不是马上return后就马上执行输出,而是要等到从函数的finally完全执行结束才告诉主函数我运行结束了,此时才重新执行主函数的剩下语句。

2.再看下面这个输出什么

public class Testus { public int fun1(){ System.out.println("a"); return 1; } public int fun2(){ System.out.println("b"); return 1; } public int test(){ try{ return fun1(); }finally{ return fun2(); } } public static void main(String args[]){ System.out.println(new Testus().test()); } } 输出a,b,2,所以是不是更加清晰了。

转载请注明原文地址: https://www.6miu.com/read-42854.html

最新回复(0)