我是否需要手动关闭. net SqlConnection,如果它在“using”语句中抛出异常

本文关键字:如果 using 抛出异常 语句 SqlConnection 是否 net | 更新日期: 2023-09-27 18:09:25

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

例如:

using (var sqlConnection = new SqlConnection(_connectionString)
{
   sqlConnection.Open();
   throw new Exception("boom!");
}

using (var sqlConnection = new SqlConnection(_connectionString)
{
    try
    {
        sqlConnection.Open();
        throw new Exception("boom!");
    }
    finally
    {
        sqlConection.Close();
    }
}

另外,在TransactionScope +异常抛出中包装这个是否会影响我应该如何.Close()using作用域自动为我做这件事?

我是否需要手动关闭. net SqlConnection,如果它在“using”语句中抛出异常

不,如果它在using

内,它仍然被处理。

using语句确保Dispose被调用在调用对象上的方法时发生异常。你可以通过将对象放入try块和中来实现相同的结果然后在finally块中调用Dispose;其实,这是如何Using语句由编译器翻译。

来源:MSDN.