Java的try/catch性能,建议将try子句中的内容保持最小化吗?
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; }
当然,这是考虑到你会以完全相同的方式处理所有这些已检查的异常。