我正在开发一个新项目,并且有一段代码,我不想实际处理异常,但要确保关闭任何数据库连接.我想知道哪个是处理这个问题的最佳方法.我看到两种方式,但不确定哪种更清楚:
SqlConnection con = new SqlConnection(connectionstring);
try
{
con.open()
//DoStuff
}
catch(Exception)
{
throw;
}
finally
{
con.close();
con.dispose();
}
Run Code Online (Sandbox Code Playgroud)
要么
try
{
con.open()
//DoStuff
}
finally
{
con.close();
con.dispose();
}
Run Code Online (Sandbox Code Playgroud)
无论哪种方式,我将异常传递给要处理的调用代码,但仍然清理连接.
您可以使用usingstatement括起您的连接.它将转换为try-finally块,就像在第二个代码示例中一样.
由于您没有对异常执行任何操作(例如日志记录),因此可以省略catch块.
您可以使用using:
using (SqlConnection con = new SqlConnection(connectionstring))
{
}
Run Code Online (Sandbox Code Playgroud)
这将确保您的连接在using块结束时处理,即使在例外情况下也是如此.您只能将using语句与那些实现IDisposable接口的对象一起使用.
如果你要处理那些没有实现的对象,IDisposable那么你的第二个代码片段(使用try-finally)就足够了,因为你想让异常冒泡.
| 归档时间: |
|
| 查看次数: |
45 次 |
| 最近记录: |