try catch finally执行顺序

from: https://www.iteye.com/blog/qiang106-254940

大家都知道
try{
}chatch(){
}finally{
}
是java中异常处理最常见的一种方法,面试中也经常会考到这方面的知识,我也看了无数遍,但总是很容易忘记,也许写出来会记忆深刻些吧.
假设try块中一个return语句的话,那么catch和finally中的代码还会执行吗?如果会执行,那么顺序又是什么?我写了个测试类分别测试了以上问题:

测试一:

class Test22
{
public static String test(){
try{
//throw new Exception();
return "return";
}catch(Exception e){
System.out.println("catch");
}finally{
return "finally";
}
}
public static void main(String[] args)
{
System.out.println(test());
}
} 

输出结果为:finally
这说明finally先执行,其实我这也可以通过理解return的意义来理解这个顺序,return是指跳出这个语句块,跳出了自然不能回来再执行里面的语句了,而finally又是必须执行的,所以在跳出之前还是让finally执行完吧.

测试二:

class Test22
{
public static String test(){
try{
throw new Exception();

}catch(Exception e){
System.out.println("catch");
}finally{
return "finally";
}
}
public static void main(String[] args)
{
System.out.println(test());
}
} 

输出结果:
catch
finally
这就是平常最常见的顺序了,try中势力出了异常,那么就是catch中执行了,然后就是finally里的语句了.

测试三:

class Test22
{
public static String test(){
try{
throw new Exception();
}catch(Exception e){
return "catch";
}finally{
return "finally";
}
}
public static void main(String[] args)
{
System.out.println(test());
}
} 

输出结果:
finally
在catch中有return和try块中有return是一样的情况了.


希望只不要忘了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学如逆水行舟,不进则退3038

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值