黑马程序员技术交流社区
标题:
分享给大家一个问题,try finally
[打印本页]
作者:
王起
时间:
2013-3-16 21:54
标题:
分享给大家一个问题,try finally
大家都知道,不管try中语句是否执行,都会执行finally ,但是如果执行了try,并且try里面的语句含有return语句,那么finally 中的语句还会执行吗?很有意思的题目!
作者:
丁涧泉
时间:
2013-3-17 05:29
try
{
int a=1;
if (a > 1)
Console.WriteLine("right");
else
return;
}
catch(Exception e)
{
}finally
{
Console.WriteLine("hello");
Console.ReadKey();
}
经过测试,验证了那句话,,不管try中语句是否执行,都会执行finally,为什么那我就不太知道了...汗
作者:
黑马-蒋振军
时间:
2013-3-24 14:40
这个也说不一定 如果return之前没有System.exit() ;类似让应用停下来的代码的话, finally中的代码就会执行 注意是在return之前执行的,希望可以帮到你
作者:
曾玉锋
时间:
2013-3-24 17:18
try{}catch{}finally{}
异常处理模块。
finally
{
这里的代码不管任何情况都会执行,但不能return
}
下面用两个简单的例子进行对比,大家就清楚了
public static int GetNum()
{
int num=1;
try
{
return num++;
}catch
{
return num;
}finally
{
num+=10;
Console.WriteLine(num);
}
}
调用GetNum()方法
Console.WriteLine(GetNum());
打印出来的结果为:12
2
也就是说虽然finally中改变了num的值,但是返回的确是try{}中的num值
这就说明了,如果finally{}前面有始终要执行的return,则finally{}虽然执行,但并不影响返回结果
例2:
public static int GetNum()
{
int num=1;
try
{
num++;
}catch
{
//num++;
}finally
{
num+=10;
Console.WriteLine(num);
}
return num;
}
调用GetNum()方法
Console.WriteLine(GetNum());
打印的结果为:12
12
这就说明,在finally中改变了num的值,而且因为前面没有始终要执行的return,所以得出的结果相同。
而且在实际开发中,finally{}中一般不用于计算,而是用于释放对象资源等
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2