0

我有一个 try-catch 块来处理一些方法的异常。此方法包含可能引发异常的其他方法,如下例所示:

try{
 MyMethod(...);

}catch(MyException1){
 // handle it...

}catch(MyException2){
 // handle it...
}



MyMethod(...){
// do things involving 
// MethodThatThrowsException1

// do other things involving
// MethodThatThrowsException2
}


MethodThatThrowsException1(...){
  if(condition1)
      throw MyException1;

  // do something 
}

MethodThatThrowsException2(...){
   if(condition2)
      throw MyException2;

// do something else
}

我的问题是:

我可以简单地调用任何在内部抛出异常的方法,MyMethod因为我在第一个 try-catch 中处理了它们,或者我应该在那里放置一个 try-catch 块(或两个)并重新抛出MyException1/MyException2像这样

MyMethod(...){
 try{
    // do things involving 
   // MethodThatThrowsException1
 }catch(MyException1){
   rethrow;
 } 

 try{
  // do other things involving
  // MethodThatThrowsException2
  }catch(MyException2){
    rethrow;
  }

}

? 如果显示的方法是错误的,请解释为什么?

4

1 回答 1

0

除非您打算用它做某事,否则您永远不需要捕获异常。在没有任何其他操作的情况下捕获异常并立即重新抛出它没有任何意义。

于 2019-08-20T12:57:23.103 回答