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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘博 黑马帝   /  2011-12-27 12:43  /  2616 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会被执行,不明白的是为什么在return前面执行呢?

8 个回复

倒序浏览
肯定是你在try里面的return语句前面出现异常了,结果程序就没有执行return语句,而是执行finally了,关键是执行了finally不可能再去执行try里面的return语句啊,你是不是看错了。

评分

参与人数 1技术分 +1 收起 理由
杨玉揆 + 1

查看全部评分

回复 使用道具 举报
张帅 黑马帝 2011-12-27 13:55:00
藤椅
还是不明白什么意思,同学再描述下
回复 使用道具 举报
finally语句是必须要执行的语句,这是java程序设计的时候流的一个语句块。
回复 使用道具 举报
付星 黑马帝 2011-12-28 17:59:10
报纸
finally是除了System.exit()退出,还有外部环境而强行退出不执行外,都会执行的,即使try里有return,也会先执行finally后再return;
下面有个例子,运行就知道了,JVM就是要这么执行的
public static void main(String[] args) {
                try {
                        System.out.println("Em");
                        return;
                } catch (Exception e) {
                        e.printStackTrace();
                }
                finally
                {
                        System.out.println("Gm");
                }
        }

//打印:
Em
Gm

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
在try,finally中,即使是try出现了异常,finally中的代码也会执行到,除非你在try中写了System.exit(0),会不走finally.当有return时先会走finally中的代码,要不你一return了,程序就结束了,finally的代码就会执行不到~!所以先会走fianlly,再走return~!
回复 使用道具 举报
张一凡 黑马帝 2011-12-28 22:31:35
7#
不管是否有异常,finally都会执行。
回复 使用道具 举报
马新乐 黑马帝 2011-12-30 21:18:34
8#
因为return语句会退出该方法或该线程,但是finally语句是必须要执行的,所以在退出之前肯定要先执行完以后才能退出!
回复 使用道具 举报
zl918 黑马帝 2012-1-8 16:11:09
9#
一个try-finally结构,只要try块开始执行了,finally块里面的代码保证执行一次并且只有一次。
打个比方,就象你上厕所,只要你一旦开始拉了,我们保证无论如何,是拉稀了也好,放屁了也罢,最终你肯定是擦了屁股走出卫生间。

应用try-finally,我们可以在异常满天飞的程序里保证我们的关键资源被按时正确清理。一个最常见的应用就是jdbc的Connection, Statement, ResultSet等。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马