如果一个异常没有被捕获,请问代码语句执行
try
{
throw new Exception("test example");
}
finally
{
Console.WriteLine("finally block");
}
如果一个异常没有被捕获,请问代码语句执行
try
{
throw new Exception("test example");
}
finally
{
Console.WriteLine("finally block");
}
是。最后块是总是执行。
是的,finally
块无论有无异常*都会运行。
请参阅try-finally (C# Reference):
finally块是有用的 清理在 try块分配的资源以及运行任何代码 即使 是一个例外,必须执行。 无论 如何尝试块退出,控制始终是 传递到finally块。
* 注意,这是不完全正确。一些例外,如StackOverflowException
将立即终止该过程。但为了讨论的缘故,说一个finally
块总是会运行是相当安全的。
+1为文档 – 2011-03-30 19:56:57
是的,finally
块中的代码保证在即使在try
块内抛出异常也能执行。
当finally
块中的代码是而不是时唯一执行的是电源故障或计算机在执行到达之前崩溃。
+1用于从每个人都省略的细节中做出最准确的答案,很可能很少有人会关心。 – 2011-03-30 20:01:27
您的测试输出了什么? – 2011-03-30 19:54:44
重复的:http://stackoverflow.com/questions/3304308/try-catch-finally-question/3304356 – 2011-03-30 19:54:47
重复http://stackoverflow.com/questions/345091/will-code-in-a-finally-statement -fire-if-i-return-a-value-in-a-try-block – WorldIsRound 2011-03-30 19:59:08