2015-08-24 15 views
2

如果一個SqlConnectionusing語句中執行期間引發異常,是否需要手動關閉finally中的連接?或將using聲明的範圍調用Dispose方法(在SqlConnection)對我來說...因此對我(自動)執行.Close();方法?如果在`using`語句內引發異常,我是否需要手動關閉.NET SqlConnection?

例如:

using (var sqlConnection = new SqlConnection(_connectionString) 
{ 
    sqlConnection.Open(); 

    throw new Exception("boom!"); 
} 

VS

using (var sqlConnection = new SqlConnection(_connectionString) 
{ 
    try 
    { 
     sqlConnection.Open(); 

     throw new Exception("boom!"); 
    } 
    finally 
    { 
     sqlConection.Close(); 
    } 
} 

此外,沒有在TransactionScope +一個例外是拋出包裝這一點,會影響我應該.Close()using範圍自動實現這個要求我。

回答

4

沒有,它仍然是配置如果是內using

using語句確保即使 發生異常,而你是調用對象的方法是調用Dispose 。你可以通過將對象放在一個try塊中並且然後在finally塊中調用Dispose來實現相同的結果;然後你可以通過 來獲得相同的結果。實際上,這是編譯器如何翻譯 使用語句。

來源:MSDN

相關問題