如果SqlConnection
在using
语句中执行期间抛出异常,我是否需要在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
范围自动执行此操作。
答案 0 :(得分:4)
不,如果它在using
using语句确保Dispose被称为,即使是 在对象上调用方法时发生异常。您可以 通过将对象放在try块中来实现相同的结果 然后在finally块中调用Dispose;其实这是怎么回事 using语句由编译器翻译。
来源:MSDN。