Java的try/catch性能,建议将try子句中的内容保持最小化吗?

8 浏览
0 Comments

Java的try/catch性能,建议将try子句中的内容保持最小化吗?

考虑到你有如下代码:

doSomething() // 这个方法可能会抛出一个已检查的异常
//做一些赋值和计算
doAnotherThing() // 这个方法也可能会抛出同一类型的已检查异常
//更多的方法调用和计算,都会抛出相同类型的异常。

现在我知道,构造异常时确实会有性能损耗,特别是解开堆栈。我也读过几篇文章,指出在进入try/catch块时会有轻微的性能损耗,但是没有一篇文章得出任何结论。

我的问题是,是否建议将try catch块中的代码行最小化?也就是说,只在try子句中放置实际可能抛出你要捕获的异常的行。try子句中的代码运行是否较慢或引起性能损耗?

但更重要的是,考虑以下最佳实践/更可读的解决方案:

try {
    doSomething() // 这个方法可能会抛出一个已检查的异常
//做一些赋值和计算
doAnotherThing() // 这个方法也可能会抛出同一类型的已检查异常
//更多的方法调用和计算,都会抛出相同类型的异常。
}
catch (MyCheckedException e) {
   //处理异常
}

或者:

try {
    doSomething() // 这个方法可能会抛出一个已检查的异常
}
catch (MyCheckedException e) {
   //将异常存储在Map中(这个操作在循环中执行,我希望它继续运行,但我也想知道哪些循环没有完成以及原因)
   continue;     
} 
 //做一些赋值和计算
try {
    doAnotherThing() // 这个方法可能会抛出一个已检查的异常
}
catch (MyCheckedException e) {
    //将异常存储在Map中(这个操作在循环中执行,我希望它继续运行,但我也想知道哪些循环没有完成以及原因)
   continue;
} 

当然,这是考虑到你会以完全相同的方式处理所有这些已检查的异常。

0