2011-03-30 95 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