0

我正在重构代码库。其中一处的代码片段如下。

try
{
    doSomething();
}
catch(Exception exe)
{
    ---Logging code---
}

我知道 catch 块必须包含控制程序流程的代码,以防 doSomething(); 中发生异常。但是,我想知道,如果上述代码保持原样,对性能的影响。

4

4 回答 4

3

使用 try catch 时会有一些性能影响。但它们太小了,你不应该为它们烦恼。

唯一需要注意的是避免在循环中直接尝试 catch 块。但是当你需要它们时,你就需要它们并且它们必须在代码中。

于 2013-10-24T18:43:30.127 回答
0

真正的问题是捕捉Exception通常是个坏主意的泛型。

于 2013-10-24T19:36:47.957 回答
0

try在块内执行代码不应该有任何性能损失。如果方法继续超过try/catch/finally块的末尾,则添加的分支指令可能会产生(可忽略的)影响。运行时性能影响主要体现在实际捕获和处理异常的情况下。将堆栈展开到正确的位置并选择正确的处理程序会产生一些开销。

于 2013-10-24T18:49:20.003 回答
0

catch 块可以做任何你想做的事情。如果你愿意,你可以让它对程序流做一些事情。您可以让它包装异常并抛出一个新异常。您可以让它记录一条消息。在我的应用程序中,我经常记录消息,以便稍后运行报告/收集有关日志的统计信息,然后继续。

如果您只是记录一条消息,然后继续,显然会对性能产生影响,因为您必须实际记录该消息(这相对较小)。影响有多大取决于您的日志记录框架。

就像上面的海报所说,循环会成倍增加性能影响。

于 2013-10-24T18:48:32.607 回答