2011-03-30 53 views
0

可能重复:
try catch finally question语句finally块

如果一个异常没有被捕获,请问代码语句执行

try 
{ 
    throw new Exception("test example");  
} 

finally 
{ 
    Console.WriteLine("finally block"); 
} 
+1

您的测试输出了什么? – 2011-03-30 19:54:44

+0

重复的:http://stackoverflow.com/questions/3304308/try-catch-finally-question/3304356 – 2011-03-30 19:54:47

+0

重复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

回答

2

是。最后块是总是执行

6

是的,finally块无论有无异常*都会运行。

请参阅try-finally (C# Reference)

finally块是有用的 清理在 try块分配的资源以及运行任何代码 即使 是一个例外,必须执行。 无论 如何尝试块退出,控制始终是 传递到finally块。

* 注意,这是不完全正确。一些例外,如StackOverflowException将立即终止该过程。但为了讨论的缘故,说一个finally块总是会运行是相当安全的。

+1

+1为文档 – 2011-03-30 19:56:57

0

是的,finally块中的代码保证在即使在try块内抛出异常也能执行。

2

finally块中的代码是而不是时唯一执行的是电源故障或计算机在执行到达之前崩溃。

请参阅http://thedailywtf.com/Articles/My-Tales.aspx

+0

+1用于从每个人都省略的细节中做出最准确的答案,很可能很少有人会关心。 – 2011-03-30 20:01:27