我正在查看一些我正在重构的代码并注意到try ... catch代码包含了相当多的代码,而不是所有抛出"正常"异常的代码,即代码根本不会抛出或者如果它执行了将是完全致命的例外,如内存异常.
我现在想知道的是,在try语句中包含太多是否会导致性能问题?
所以我看到这样的事情:
try
{
// Won't throw (I think that is the case anyway!)
if (e.Error == null)
{
return;
}
// Only fatal exceptions
myClass c = new myClass();
// Now carry out the code that could cause catchable exception
}
catch
{
}
Run Code Online (Sandbox Code Playgroud)
性能问题?真的,没有什么值得注意的。然而,从寻找错误的角度来看,这可能是一场噩梦。当您将 100 行代码包装在 try/catch 中时,很难找出这 100 行中哪一行引发了异常。尽管有所有逻辑(或者实际上是因为人类逻辑有缺陷),“永远不应该抛出异常”的代码”的代码通常抛出最多。
我说,如果您的代码永远不应该抛出异常,那么可以通过不将其包装在 try/catch 块中来支持它。否则,只需尝试/捕获您的Main方法并完成即可。