先来一段代码:
public class Test6
{
public static void main(String[] args)
{
Test6 t = new Test6();
System.out.println(t.test());
}
int test1()
{
System.out.println("我是try中的return,我执行了!");
return 1;
}
int test2()
{
System.out.println("我是finally中的return,我执行了");
return 2;
}
int test()
{
try
{
return test1();
}
finally
{
return test2();
}
}
}
运行结果是:我是try中的return,我执行了!
我是finally中的return,我执行了
2
认识:
如果try中的return先执行了,那么它必然先调用test1()这个方法,test1()中的return
应该也是执行了,但是却没有立刻返回,而是主函数继续执行finally{},当遇到finally中的
return时,它先返回了一个2,函数就结束了,所以try中的return返回的1还在栈当中,
没有返回
我们在写一个finally中没有返回值的代码:
ppublic class Test6
{
public static void main(String[] args)
{
Test6 t = new Test6();
System.out.println(t.test());
}
int test()
{
int x = 1;
try
{
return x;
}
finally
{
x=x+1;
}
}
}
输出结果是:1
这个结果可以看出try中的return是在finally先执行的
|