黑马程序员技术交流社区

标题: try 和finally [打印本页]

作者: 刘博    时间: 2011-12-27 12:43
标题: try 和finally
try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会被执行,不明白的是为什么在return前面执行呢?
作者: yunqiangshan    时间: 2011-12-27 13:26
肯定是你在try里面的return语句前面出现异常了,结果程序就没有执行return语句,而是执行finally了,关键是执行了finally不可能再去执行try里面的return语句啊,你是不是看错了。
作者: 张帅    时间: 2011-12-27 13:55
还是不明白什么意思,同学再描述下
作者: 黄战胜    时间: 2011-12-28 16:54
finally语句是必须要执行的语句,这是java程序设计的时候流的一个语句块。
作者: 付星    时间: 2011-12-28 17:59
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
作者: 黄湘怡    时间: 2011-12-28 21:27
在try,finally中,即使是try出现了异常,finally中的代码也会执行到,除非你在try中写了System.exit(0),会不走finally.当有return时先会走finally中的代码,要不你一return了,程序就结束了,finally的代码就会执行不到~!所以先会走fianlly,再走return~!
作者: 张一凡    时间: 2011-12-28 22:31
不管是否有异常,finally都会执行。
作者: 马新乐    时间: 2011-12-30 21:18
因为return语句会退出该方法或该线程,但是finally语句是必须要执行的,所以在退出之前肯定要先执行完以后才能退出!
作者: zl918    时间: 2012-1-8 16:11
一个try-finally结构,只要try块开始执行了,finally块里面的代码保证执行一次并且只有一次。
打个比方,就象你上厕所,只要你一旦开始拉了,我们保证无论如何,是拉稀了也好,放屁了也罢,最终你肯定是擦了屁股走出卫生间。

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





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2