您的位置:首页 > 其它

try catch finally与return的执行顺序

2011-07-07 16:01 447 查看
测试1:
public static int test1()
{
int i = 1;
try
{
return ++i;
}
finally
{
++i;
Console.WriteLine("finally:" + i);
}
}
static void Main(string[] args)
{
Console.WriteLine("Main:" + test1());
}
结果:
finally:3
Main:2
测试2:
public static int test2()
{
int i = 1;
try
{
throw new Exception();
}
catch
{
return ++i;
}
finally
{
++i;
Console.WriteLine("finally:" + i);
}
}

static void Main(string[] args)
{
Console.WriteLine("Main:" + test2());
}
结果:
finally:3
Main:2

测试3:
public static int test3()
{
try{}
finally
{
return 1;
}
}
结果:
编译错误,控制不能离开 finally 子句主体。

结论:
1.不管出没出现异常,finally块中的语句都会执行;
2.当try或catch块中有return语句时,finally块中的语句仍会执行;
3.finally块中的语句是在函数返回前执行的,但函数返回值是在finally块中语句执行前确定的;
4.finally块中不能包含return语句。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: