Try catch finally 执行顺序小结
2010-06-18 10:33 ☆冷枫☆ 阅读(3703) 评论(0) 编辑 收藏 举报try、catch、finally结构体在我们的程序中用的比较多,但对于他们的执行顺序我想了解的人并不是很多。下面我们就来具体的测试一下它执行的顺序,一起去探讨了解一下吧。
测试方法1:
public static int Test1()
{
int count= 1;
try
{
return ++count;
}
finally
{
++count;
Console.WriteLine("finally-value:" +count);
}
}
static void Main(string[] args)
{
Console.WriteLine("Main-value:" + Test1());
}
运行结果:
finally-value:3
Main-value:2
测试方法2:
public static int Test2()
{
int count= 1;
try
{
throw new Exception();
}
catch
{
return ++count;
}
finally
{
++count;
Console.WriteLine("finally-value:" +count);
}
}
static void Main(string[] args)
{
Console.WriteLine("Main-value:" + Test2());
}
运行结果:
finally-value:3
Main-value:2
测试方法3:
public static int Test3()
{
try{}
finally
{
return 1;
}
}
运行结果:
出现编译错误,错误信息"控制不能离开 finally 子句主体"。
由测试得到的结论:
1.不管是否异常,finally块中的语句都会执行;
2.当try或catch块中有return语句时,finally块中的语句仍会执行;
3.finally块中的语句是在函数返回前执行的,但函数返回值是在finally块中语句执行前确定的;
4.finally块中不能包含return语句。
励志博客园--优秀的阅读、励志、交流学习平台。您的网上心灵家园!