try-catch块的位置是否会影响性能?

时间:2010-07-27 03:28:49

标签: java performance try-catch

try-catch块的位置会影响性能吗?

示例1:在 while循环

中的try-catch块
while (true) {
    try {
        // ... read from a file
    } catch (EOFException e) {
        break;
    }
}

示例2:try-catch块环绕 while循环

try {
    while (true) {
        // ... read from a file
    } 
} catch (EOFException e) {
    // :P
}

从逻辑上讲,这两个例子是等价的,但我更喜欢哪个?

5 个答案:

答案 0 :(得分:3)

Should java try blocks be scoped as tightly as possible?

这给出了比我更好的答案。除此之外,它们只是在抛出异常时检查的表上添加一个条目,因此除非抛出异常,否则它们不会影响性能。如果可以的话,最好把它放在尽量恢复的地方。如果没有,只要有用或有意义。 虽然在循环之外休息,但我不认为第二个是有效的。

答案 1 :(得分:1)

任何开销try-catch都可以忽略不计,但是第一种情况引起我注意的更多是它具有误导性:你捕获异常,只是为了中止循环。我选择解决方案2只是因为它与意图一致。而且你可以避免任何开销。

答案 2 :(得分:0)

您的try-catch的放置对您的应用程序的性能没有任何影响。即使它确实如此,也完全可以忽略不计,这不是你想要引导你的能量的地方。首先根据需要实施,然后进行优化。不要微观优化。

答案 3 :(得分:-1)

你可以在外面休息吗?我不认为你的预设,2是等价的是真的。

我的直觉告诉我,循环外的try / catch更好。如果通过编写try / catch对字节码产生影响,则创建较少的内容会更好。如果除非发生异常,否则没有影响,那么无关紧要。我没有看到任何情况下让try / catch更好。

我可能错了......

答案 4 :(得分:-1)

第二个例子(try-catch块围绕代码)更快更清晰。