哪种方式更适合“;手柄;一个异常,我想让气泡出现,但执行清理代码
本文关键字:气泡 执行 代码 一个 方式更 手柄 异常 | 更新日期: 2023-09-27 18:29:58
我正在处理一个新项目,有一段代码我不想实际处理异常,但要确保关闭所有数据库连接。我想知道处理这个问题的最佳方式是什么。我看到了两种方法,但不确定哪一种会更清楚:
SqlConnection con = new SqlConnection(connectionstring);
try
{
con.open()
//DoStuff
}
catch(Exception)
{
throw;
}
finally
{
con.close();
con.dispose();
}
或
try
{
con.open()
//DoStuff
}
finally
{
con.close();
con.dispose();
}
无论哪种方式,我都会将异常传递给要处理的调用代码,但仍会清理连接。
您可以使用using
语句来封装您的连接。它将转换为try-finally
块,就像您的第二个代码示例中一样。
由于您没有对异常(如日志记录)执行任何操作,因此可以省略catch块。
你可以像一样使用using
using (SqlConnection con = new SqlConnection(connectionstring))
{
}
这将确保您的连接在using
块的末尾被处理,即使在出现异常的情况下也是如此。您只能将using
语句与那些实现IDisposable
接口的对象一起使用。
如果您要处理不实现IDisposable
的对象,那么您的第二个代码片段(with try finally)就足够了,因为您希望出现异常。