它们之间的区别是什么
try
{
...
}
catch (NHibernate.ADOException exception)
{}和
try
{
...
}
catch (exception ex)
{}发布于 2010-08-24 18:40:01
在catch块中,您可以指定希望捕获哪些异常。所以如果你有
try {}
catch(Exception e){}它将捕获从Exception类派生的所有异常(因此捕获所有异常)。如果您有:
try{}
catch (NHibernate.ADOException exception){}它将只捕获属于或派生于ADOException的异常。因此,如果你得到一个ArgumentException,它将会通过,就好像没有尝试/捕捉。
发布于 2010-08-24 18:42:04
我猜你的意思是
catch (Exception ex) {}使用第二个代码片段。
那么不同之处在于,第一个将只捕获一种特定类型的异常,即NHibernate.ADOException,而第二个将进入所有可能抛出的异常的catch块。
第二种通常是不好的做法,因为您声称可以处理所有可以想到的错误类型。但是,在最外层的作用域中,它可以作为任何已通过的异常的总括。
发布于 2010-08-24 18:43:20
强烈建议不要使用catch { Exception },因为这实际上隐藏了一个bug。在每个可能抛出异常的地方,只捕获预期的异常类型是必要的,即使这需要编写更多的代码行。当抛出意外异常时,程序必须崩溃,这是修复错误的唯一方法。
https://stackoverflow.com/questions/3555534
复制相似问题