2013-02-27 22 views
3

我對使用using關鍵字有一些疑問。我有以下代碼:如果在using語句中引發異常,清理邏輯是否仍然會被調用?

try { 
    using (System.Net.WebResponse response = httpWebRequest.GetResponse()) { 
     throw new Exception("Example"); 
    } 
} 

catch (Exception ex) { 
} 

我的問題是,當發生異常時它會關閉連接?或者我必須關閉捕獲內部的連接?

+3

使用將配置(關閉)對象。 – Tim 2013-02-27 17:55:28

回答

4

是的,它會關閉連接。

using的全部要點在於,即使出現異常,它也會在您離開using的範圍時處置該對象。

a using塊在引擎蓋下使用try/finally塊實現。

這是很容易測試實驗,以及:

public class Foo : IDisposable 
{ 
    public void Dispose() 
    { 
     Console.WriteLine("I was disposed!"); 
    } 
} 

private static void Main(string[] args) 
{ 
    try 
    { 
     using (var foo = new Foo()) 
      throw new Exception("I'm mean"); 
    } 
    catch { } 
} 

,輸出是:

我佈置!

相關問題