黑马程序员技术交流社区

标题: try finally return顺序问题 [打印本页]

作者: 邵景伦    时间: 2014-3-21 11:15
标题: try finally return顺序问题
try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 程序怎么验证?
作者: 追逐    时间: 2014-3-21 12:50
1、会被执行。
2、在return后。return这只是结束try语句,
      finally只有在一种情况下会不执行。就是遇到system.exit(0)才不会输出。因为system.exit(0)是关闭虚拟机
3、因为try{}finally{}是顺序执行的。只有前面的执行完了。后面的才会执行。在try{}语句中只要不是遇到system.exit(0);这个结束虚拟机的语句。finally就肯定会被执行的。这个在毕向东老师讲异常的时候曾经提到过
作者: 青木郎    时间: 2014-3-21 14:04
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:40
本帖最后由 菜小徐 于 2014-3-21 19:42 编辑

try{
   这里是处理的语句
}catch(exception e){
   出现异常就会执行
}finally{  一定会就会执行
}





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