【发布时间】:2015-04-14 22:42:17
【问题描述】:
我这里有一些代码:
public static void OpenConnection(IDbConnection connection)
{
if(connection == null)
throw new ArgumentNullException("connection", "The connection was null.");
if (connection.State != ConnectionState.Closed)
connection.Close();
}
代码必须执行很多次,因为每次我在数据库中做某事时都会打开和关闭连接。我想知道下一个代码在性能方面是否会更好:
public static void OpenConnection(IDbConnection connection)
{
try
{
connection.Close();
}
catch (NullReferenceException nullReferenceException) { throw; }
catch (Exception exception) { } // This will occur if the connection was already closed so nothing should be done then.
}
PS。 catch (Exception exception) { } 有必要吗?
编辑:在第二个代码中将ArgumentNullException 替换为NullReferenceException,因为当connection == null 出现时,这将是异常。
【问题讨论】:
-
是的,第二次捕获是必要的,因为您的第一次捕获只会捕获 ArgumentNullException 类型的异常,但不会捕获其他类型的异常(如果有)
-
回答你的 p.s. - 没必要 - 它有害。它正在吞噬任何其他类型的异常。
-
你通常将 connection.open 代码放在 try 块中,将 connection.close 放在 finally 块中。第二个 catch 不是必需的,但对于错误记录很有用。
标签: c# exception-handling