黑马程序员技术交流社区
标题:
try{]finally{}问题?
[打印本页]
作者:
李柯
时间:
2012-4-14 12:27
标题:
try{]finally{}问题?
如果try{}里有一个return语句,那么这个try后的finally{}里的代码会不会被执行,如果执行的话是在return前还是后?
另外如果可以执行的话,那么在try{}中加什么语句finally就不会执行了?
作者:
李震 李震 李震
时间:
2012-4-14 12:43
finally语句总是会执行的,准确来说会在return中间执行、
作者:
刘占月
时间:
2012-4-14 13:08
finally总是会执行的,除非遇到System.exit这一句,否则它总会执行。
是为了避免程序出现异常情况时来执行一些关闭资源的操作
作者:
马强
时间:
2012-4-14 13:14
System.exit(0); 这个是退出jvm 仅有的让finilly不执行
简单的例子
class Demo{
public static void main(String[] args)
{
method();
}
public static int method()
{
try
{
for (int x =0;x<10 ;x++ )
{
System.out.println(x);
}
System.exit(0);
}
catch (Exception n)
{
}
finally
{
System.out.println("over");
}
return 1;
}
}
作者:
孙国军
时间:
2012-4-14 13:45
如果try{}里有一个return语句,那么这个try后的finally{}里的代码会不会被执行,如果执行的话是在return前还是后?
finally中的代码还是会被执行,return结束程序之前,会查看是否有finally,如果有,执行完再推出程序,反之,直接推出程序;
另外如果可以执行的话,那么在try{}中加什么语句finally就不会执行了?
貌似不管怎样,都要执行
作者:
魏明明
时间:
2012-4-14 13:49
finally语句是一定会执行的,一般用来关闭资源用的,finally 语句是再try 里面return 语句是中间执行、你一定不需要运行finally语句的话当然是退出虚拟机,System.exit(0);
作者:
蒋亮
时间:
2012-4-14 15:02
finally是用来包含一段总是会执行的代码块的,一般用与关闭流、资源什么的,至于是在return语句之前执行还是之后执行,这个我很纠结,有说之前的,有说中间的,但是如果try中有个return 1语句,finally中有个return 2语句,那么最终返回的是2, 1会被覆盖掉,这是不是在之后呢?纠结,望有高手指教一下。
作者:
袁培育
时间:
2012-4-14 15:09
毕老师说finally里的语句一般都会执行,即使try里有return语句也会执行。我认为应该是先执行finally里的语句,因为视频里老师说在要执行return语句时会先找finally里有没有语句,如果有先执行finally的语句之后再return。只有当try里有System.exit时才不执行finally的语句。
作者:
黑马-王建雨
时间:
2012-4-14 21:39
除了遇见System(0),其他状况 finally都会执行的。
你只要记住一句话:finally 的天敌只有System(0)。
希望能解决你的疑惑、我们一起加油。
作者:
韩新凯
时间:
2012-4-14 22:46
除了system.exit强制推出虚拟机外,finally总是会执行的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2