2013-06-20 17 views
0

假設我有這個代碼。如果異常是InvalidData,這是否會最終調用清理資源。這是否會最終調用?

while(CanWork){ 
      try 
      { 
       .... 
      } 
      catch (InvalidDataException e) 
      { 
       LogAction(false, e.Message, e.StackTrace); 
       break; 
      } 
      catch (Exception e) 
      { 
       LogAction(false, e.Message, e.StackTrace); 
      } 
      finally 
      { 
       if (insta != null) 
       { 
        insta.Disconnect(); 
        insta.Dispose(); 
        insta = null; 
       } 
      } 
      } 
+0

「最終」塊將始終調用,無論您是否遇到異常。 –

+0

我的意思是在第一次抓到我的時候休息一下,休息之前最後會打電話給我? – Daniel

+0

'使用'可能會更容易,注意,但簡單的答案:「是」 –

回答

4

是會,但不是當它即將離開一段時間,但只是在try or catch代碼執行完畢後。

1

當然可以。 finally塊始終得到執行。請參閱此link以獲取更多詳細信息

+0

要小心「永遠」 - 有一系列情況下,它不會;好的,那些過程非常噁心的病態情景 - 但它們是真實的。更簡單地說:如果電源關閉,它將不會運行'finally' –

+0

@MarcGravell你可以讓我知道所有這些場景的範圍或引用一個鏈接,這將是非常非常有用的我 – Pawan

+1

場景涉及線程中止或快速退出,可能存在某些安全性異常或內存不足情況;像那樣的東西 - 討厭的東西 –

相關問題