正确的做法是什么。
从最具体到最一般或相反地捕获异常。
如果我写
try
{
...
}
catch( Exception e )
{
...
}
catch( NullReferenceException nre )
{
...
}
NullReferenceException nre会被捕获吗?
正确的做法是什么。
从最具体到最一般或相反地捕获异常。
如果我写
try
{
...
}
catch( Exception e )
{
...
}
catch( NullReferenceException nre )
{
...
}
NullReferenceException nre会被捕获吗?
try
{
...
}
catch( NullReferenceException nre )
{
...
}
catch( Exception e )
{
...
}
同时,我不会捕获NullReferenceException
异常,而是在实际访问之前测试我要访问的值是否为空,或使用空合并运算符(??)确保不会发生此异常。
应避免捕获通用的Exception
。在我看来,你只应该在一些全局异常处理程序中这样做,因为每次调用方法时很少能处理所有可能出现的异常情况。在这种情况下,如果有任何特定的异常,只需捕获它们并采取适当的措施即可。
try
{
}
catch(NullReferenceException nre)
{
}
catch(Exception e)
{
}
请查看这里(MSDN)
从最派生到最不派生
NullReferenceException
应该作为第一个放入 catch 列表中的异常。try {
...
} catch (NullReferenceException ex) {
....
} catch (Exception ex) {
...
}
这指定了您希望以特定方式处理NullReferenceException
,即您有具体的事情要做。然后,让其他类型的异常通过最通用的catch语句。另一方面,应避免非特定的异常处理,正如此MSDN文章所建议的那样:异常处理
。
此外,最好在尝试访问对象之前验证要访问的对象是否为null(Visual Basic中的Nothing),而不是让代码访问该对象并在其为null时抛出此异常。以下是有关此问题的有用链接:.NET中的异常处理最佳实践
。
当然,它是从最具体到最一般的。
try {
...
} catch (IOException ex) {
....
} catch (Exception ex) {
...
}
最具体的先
NullReferenceException异常会被捕获吗?
真的
不会被捕获