我想到了这样一个事实,即如果有错误,使用try和catch对于防止崩溃非常有用,但如果我过度使用try和catch块,那么如果对性能有任何影响我很好奇。
要恢复:如果我在所有地方使用try和catch(几乎),对性能有任何影响吗?
答案 0 :(得分:2)
我认为你将看到的主要性能(假设有问题的代码以非常高的频率执行)将来自垃圾收集。
一个简单的例子(你实际上偶尔会在生产代码中看到......)会有密码验证逻辑,如:
if (!password.equals(correctPassword)) {
throw new IncorrectPasswordException();
}
然后......
catch (final IncorrectPasswordException ex) {
//some output or so
}
...而不是简单地从不抛出任何东西而只是通过条件处理它。您最终必须从内存中清除所有IncorrectPasswordException
。
在这种情况下,过度使用异常实际上会变得非常昂贵,因为将简单的评估转换为会耗费内存的对象实例化,更重要的是最终会花费宝贵的CPU周期来通过垃圾回收来回收内存。
答案 1 :(得分:2)
异常投掷/处理会带来轻微的性能损失(确切的数量因具体情况而异),但性能不应该是您的首要考虑因素。