public class Test
{
public static void main(String[] args)
{
System.out.print(tt());
}
public static int tt()
{
int b = 23;
try
{
System.out.println("yes");
return b+=88;
}
catch(Exception e)
{
System.out.println("error : " + e);
}
finally
{
if(b>25)
{
System.out.println("b>25 : "+b);
} System.out.println("finally");
}
return b;
}
}
代码说明: 主要是用来测试return和finally语句到底哪个先执行.在try语句中,返回了b=111; 在finally语句中判断是否大于25,如果大的话就输出大..程序的结果是
yes
b>25 : 111
finally
111
也就是说明finally语句在return语句执行完了以后才执行的.
OK,那么问题来了,如果我把finally语句改成这样呢:
finally
{
if(b>25)
{
System.out.println("b>25 : "+b);
}
System.out.println("finally");
return 100;
}
结果:
yes
b>25 : 111
finally
100
说明:finally中的return把try语句中的return覆盖了
所以说:
碰到try语句中的return,那么先把return的值放在某个地方,然后执行finally里面的代码块,如果有返回值覆盖语句,就改变先前放在某个地方的那个值,如果没有,就把那个地方的东西取出来返回出去
|