如果在try块中没有抛出异常,try / catch会影响性能吗?

does try/catch affects performance if no exception thrown in try block?

我刚开始编程,想知道如果在try块中没有抛出异常,try/catch是否会影响性能?


不,不是。

因为如果不发生异常,则不会执行catch块,因此它不会影响性能。

所以假设我有这段代码:

1
2
3
4
5
6
7
try {
    Integer.parseInt("123");
} catch (NumberFormatException e) {
    while (true) {
        System.out.println("Error");
    }
}

catch块运行无限循环,因此这会影响性能,但何时会发生这种情况?如果数字不是整数,则会引发异常,因此它可以执行catch块,在这种情况下,它将影响性能。


是的,试着接球会影响你的表现。

有关详细信息,请查看此链接(来自msdn)。

链接是有帮助的,但是它关于异常的内容与您的"是"答案是相反的。

"Finding and designing away exception-heavy code can result in a decent perf win. Bear in mind that this has nothing to do with try/catch blocks: you only incur the cost when the actual exception is thrown. You can use as many try/catch blocks as you want. Using exceptions gratuitously is where you lose performance"


将有一些需要运行的安装代码,例如在Java中,一个尝试块安装到一个特殊的表中(JVM在抛出异常时查看),但这应该是无关紧要的。期望是,当不抛出异常时,Try/Except没有开销。