如果它在`using`语句中抛出异常,是否需要手动关闭.NET SqlConnection?

时间:2015-08-24 12:07:43

标签: c# .net ado.net using sqlconnection

如果SqlConnectionusing语句中执行期间抛出异常,我是否需要在finally中手动关闭连接?或者using语句的范围是否会为我调用Dispose方法(在SqlConnection上)...因此为我执行.Close();方法(自动)?

例如:

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 +一个异常包装在一起,会影响我应该{i} .Close()using范围自动执行此操作。

1 个答案:

答案 0 :(得分:4)

不,如果它在using

之内,它仍会被处置
  

using语句确保Dispose被称为,即使是   在对象上调用方法时发生异常。您可以   通过将对象放在try块中来实现相同的结果   然后在finally块中调用Dispose;其实这是怎么回事   using语句由编译器翻译。

     

来源:MSDN