黑马程序员技术交流社区
标题:
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