黑马程序员技术交流社区
标题:
try语句包含return语句的finally执行情况
[打印本页]
作者:
谷龙强
时间:
2013-6-25 23:37
标题:
try语句包含return语句的finally执行情况
本帖最后由 孙百鑫 于 2013-6-27 07:49 编辑
方法中的try{}中如果有return语句,那么这个try对应的finally里面的代码会被执行吗?
作者:
8047107
时间:
2013-6-25 23:46
一定的!
作者:
刘_鑫
时间:
2013-6-25 23:56
finally是一定会执行的
只有代码中有system.exit() 这一种情况 才不会执行finally
因为终止了虚拟机进程
finally会在return之前执行
如果在finally里面有return情况会更复杂
作者:
张承富
时间:
2013-6-25 23:59
finally里面的代码是一定会被执行的,不管你try里面的代码如何,当然那个特殊的情况,就是楼上的说的,我没用过
作者:
王磊
时间:
2013-6-26 00:00
public class Demo
{
public static void main(String[] args)
{
int i = test();
System.out.println(i);
}
public static int test()
{
int x = 0;
try
{
x = 1;
return x;
}
catch(Exception e)
{
}
finally
{
System.out.println("finally执行到了");
return x+1;//这个注释掉的时候,return 0不注释
}
//return 0;
}
}
复制代码
这是我在学return和finally时,自己写的一个代码,根据结果能看出来finally和return的运行情况。
作者:
tpsu88
时间:
2013-6-26 00:01
这个是毕老师的例子:
class ExceptionDemo5
{
public static void main(String[] args)
{
Demo d = new Demo();
try
{
int x = d.div(4,-1);
System.out.println("x="+x);
}
catch (FuShuException e)
{
System.out.println(e.toString());
return;
//System.exit(0);//系统,退出。jvm结束。
}
finally
{
System.out.println("finally");//finally中存放的是一定会被执行的代码。
}
System.out.println("over");
}
}
复制代码
只有return,除了捕获异常以外,还会打印finally里面的语句,但是不打印over。
如果写System.exit(0); finally里面就不会执行! 系统,退出。jvm结束。
作者:
王靖远
时间:
2013-6-26 01:22
tpsu88 发表于 2013-6-26 00:01
这个是毕老师的例子:只有return,除了捕获异常以外,还会打印finally里面的语句,但是不打印over。
如果写 ...
正解。System.exit(0);才可以阻止finally里的代码运行。
作者:
王广亚
时间:
2013-6-26 09:04
”System.exit(0);才可以阻止finally里的代码运行。”又学到了东西,受教了,好像感觉这个在毕老师的视频里没有讲到,或者我疏忽了。
作者:
郭伟杰
时间:
2013-6-26 12:10
不会 你试一下啊
作者:
majunm
时间:
2013-6-26 12:29
只有JVM虚拟机系统退出时--System.exit(0);-- 才能阻止finally语句执行!!!! return 尚不能阻止!!
作者:
孙百鑫
时间:
2013-6-27 07:49
楼主您好。我已将您的帖子改成已解决。如果帖子发布长时间没加分。及时联系我。以免漏分的情况发生{:soso_e100:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2