我正在查看一些我正在重构的代码并注意到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
{
}
答案 0 :(得分:3)
除非真的抛出异常,否则try-catch不会给你带来可衡量的性能影响。
答案 1 :(得分:3)
效果问题?真的,没有什么值得注意的。然而,从错误搜寻的角度来看,它可能是一场噩梦。当你在try / catch中包含100行代码时,更难以弄清楚这100行中的哪一行引发了异常。尽管存在所有逻辑(或者实际上是因为有缺陷的人类逻辑),“永远不应该抛出异常”的代码通常会抛出最多。
我说,如果你的代码永远不会抛出异常,那么通过不将它包装在try / catch块中来备份它。否则,只需尝试/捕捉Main
方法并完成它。