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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邵景伦 中级黑马   /  2014-3-21 11:15  /  1386 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 程序怎么验证?

3 个回复

倒序浏览
1、会被执行。
2、在return后。return这只是结束try语句,
      finally只有在一种情况下会不执行。就是遇到system.exit(0)才不会输出。因为system.exit(0)是关闭虚拟机
3、因为try{}finally{}是顺序执行的。只有前面的执行完了。后面的才会执行。在try{}语句中只要不是遇到system.exit(0);这个结束虚拟机的语句。finally就肯定会被执行的。这个在毕向东老师讲异常的时候曾经提到过
回复 使用道具 举报
try里面的代码会被执行,如果里面有return语句,return也会被执行,但是return的结果并不会直接显示出来,而是循处在一个临时区域当中,然后执行finally的i++,虽然i变成1了,但是返回的还是临时区域里的0,但是如果把finally里面注释的return i打开,则执行finallyi++之后监测到return语句,则将i=1替换掉临时区域的i=0,然后将i=1返回。
public static void main(String[] args) {
                int i = 0;
                System.out.println(method1(i));
               
        }
        
        public static int method1(int i){
               
                try{
                        
                        return i;
                }
                finally{
                        i++;
                        System.out.println(i);
                        //return i;
                }
        }
回复 使用道具 举报
本帖最后由 菜小徐 于 2014-3-21 19:42 编辑

try{
   这里是处理的语句
}catch(exception e){
   出现异常就会执行
}finally{  一定会就会执行
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马