尝试捕获区域对性能的影响是什么?

时间:2014-12-01 07:55:24

标签: java performance exception-handling

try / catch的小区域是否比广泛区域表现更好或没有差异?

small area

try{
    // the line needs exception handling
} catch( Exception e) {

  }

wide area

try{
    // the line needs exception handling
    // other lines of code
} catch( Exception e) {

  }

2 个答案:

答案 0 :(得分:2)

从Java 1或2开始,在Java中输入try块时没有任何显着的性能成本(如果那时,我不记得,很久以前) 。当抛出时,它(有点)成本很高(这很好,它们是针对异常条件,而不是正常条件),但是进入try块很便宜因此,从代码中的正常流程的性能角度来看,使用几个小的还是几个大的并不重要。

异常的要点和目标是允许您将异常处理移出主代码的方式,这主要针对较大的块而不是非性能方面的较小块。但是如果你保持方法简短(这是一个关键的代码质量/可维护性度量),一个异常块(如果你需要一个)可以覆盖几乎所有的方法,而不是很大。

答案 1 :(得分:2)

可能没有任何区别。但是如果有不同的方法抛出不同类型的异常,那么它不是捕获Exception的好方法。您应该捕获除顶级Exception以外的特定Exception

例如:

try{
 // logic one

}catch(MyException1 e){

} 
try{
 // logic two

}catch(MyException2 e){

} 

您可以在Java 7中将其转换为以下内容

try{
 // logic one
 // logic two
}catch(MyException1 | MyException2 e){

}