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) {
}
答案 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){
}