使用using时,如果被using包含的代码抛出了异常,那using还会自动回收资源吗。望高手解答一下using(SqlConnection conn = new SqlConnection(ConnString))
{
conn.open();
SqlCommand cmd = new SqlCommand(StrSql,conn);
cmd.ExecuteNonQuery();
}如上述代码,如果cmd.ExecuteNonQuery();执行出错,抛出了异常,那using还会回收资源吗,还是需要在using里使用try来捕获错误,然后手动来释放资源。
{
conn.open();
SqlCommand cmd = new SqlCommand(StrSql,conn);
cmd.ExecuteNonQuery();
}如上述代码,如果cmd.ExecuteNonQuery();执行出错,抛出了异常,那using还会回收资源吗,还是需要在using里使用try来捕获错误,然后手动来释放资源。
那么即使发生异常这个连接也会马上销毁。
所有实例化的对象都必须实现 System.IDisposable 接口;当到达using 语句的末尾,或者如果语句结束之前引发异常并且控制离开语句块,都可以退出 using 语句,退出 using 语句时在创建的实例对象上调用 Dispose,释放资源。