A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张绅仪 注册黑马   /  2012-5-14 22:37  /  1600 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如果try块,catch块里面有return语句,为啥还执行finally块中的语句也会执行,什么情况不执行,最后执行的顺序是什么?

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

2 个回复

倒序浏览
即使在try块和catch块中存在return语句,finally块中语句也会执行。发生异常时的执行顺序是:执行try块或catch中return之前的语句,执行finally中语句,执行try块或catch中的return语句退出。finally块中语句不执行的唯一情况是:在异常处理代码中执行System.exit(1),将退出java虚拟机。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
finally()块中的语句一般都是用来关闭资源用的,只有一种情况不会执行finally()块中的语句,就是在finall()前执行到System.exit(1);语句会不执行finally()块,否则是一定会执行的。

try catch finally的执行顺序是这样的,如果try块中的语句有异常则不再往下执行,直接执行catch块中的语句,然后执行finally块,
如果try中的语句没有异常则跳过catch()中的语句,执行finally()中的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马