黑马程序员技术交流社区
标题:
return
[打印本页]
作者:
张海洋
时间:
2013-3-23 09:08
标题:
return
try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
作者:
谭辉
时间:
2013-3-23 09:22
如果抛出异常的语句在return之前,那么return就不会被执行,但finally语句块会执行
如果抛出异常的语句在return之后,那么会直接return而不会抛异常,但finally语句块还是会执行,
不管怎么样finally都会执行.
作者:
丘凤光
时间:
2013-3-23 09:44
异常处理的语句是
try
{
需要被检测的代码;
}
catch(异常类 变量)
{
处理异常的代码;(处理方式)
}
finally
{
一定会执行的语句;
}
复制代码
楼主可以自己写代码测试,如
/*
需求:
try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
*/
class Test
{
public static void main(String[] args)
{
try
{
System.out.println("try");
return;
}
catch (Exception e)
{
System.out.println("catch");
}
finally
{
System.out.println("finally");
}
}
}
复制代码
输出结果为
try
finally
说明finally{}无论怎样都执行,是一定要执行的语句。
因为异常处理语句try……catch……finally有个特点,先执行完try{}中的语句直到碰到异常,再执行catch(出现异常时),最后执行finally,
所以return会在finally语句前执行。
希望对楼主有帮助。
作者:
黑马朱超
时间:
2013-3-23 10:16
void run()
{
try
{
可能出现异常的语句---1;
return ;
可能 出现异常的语句---2:
}
catch(Exception)
{
处理语句---3;
}
finally
{
一定会执行的语句---4;
}
}
可能性1:
如果运行的时候,如果在执行语句1的时候发生了异常,那么return和语句2都不执行了,执行3,和4.顺序为 1-3-4
可能性2:
如果可能运行的时候,语句1没有异常,那就执行return之前去执行语句4, 语句2,3 都不执行。顺序1 -4-return
语句2是如何都执行不到的。
作者:
唐永康
时间:
2013-3-23 10:31
try后的finally {}里的code会执行,比如在关闭IO流的时候,这里的finally就会被执行,还有一种情况,就是程序异常时,可能前面的所有代码都被卡住了,比如在多线程当中,但是这个时候finally当中的代码是一定会被执行的。
作者:
张昶
时间:
2013-3-23 11:27
finally中的代码是一定会被执行的.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2