【Java】try,catch,finally执行顺序

0个return

try{}    catch(){}    finally{}
按顺序执行

1个return

try{return;}    catch(){}    finally{}
先执行 try 里 return 之前的语句,
再执行 finally
再执行 try 里的 return。

如果 try 里遇到异常,执行异常之前(之后的都无法执行包括 return)。
执行 catch
再执行 finally

try{}    catch(){return;}    finally{}
执行 try,无异常
执行 finally

执行 try,有异常
直接执行 catch return之前的语句
执行 finally
再执行 catch return语句

try{}    catch(){}    finally{return;}
执行 try,无异常
执行 finally全部

执行 try,有异常
直接执行 catch
执行 finally全部。

2个return

try{return;}    catch(){return;}    finally{}
执行 try return之前语句,无异常
执行 finally全部
再执行 try return语句

执行 try return 之前语句,有异常
直接执行 catch return之前语句
执行 finally全部
再执行 catch return 语句

不多说了…

3个return

try{return;}    catch(){return;}    finally{return;}
执行 try return之前语句,无异常
执行 finally全部

执行 try return之前语句,有异常
直接执行 catch return之前语句
执行 finally全部

看下这俩图区别:
在这里插入图片描述
在这里插入图片描述


这3个图区别
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

如果 finally里有return语句,执行finally就会直接结束,因为到finally这就会执行finally全部

1、不管有没有出现异常,finally块中代码都会执行;
2、当try和catch中有return时,finally仍然会执行;
3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,不管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;
4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值