“重新抛出”到下一个 catch 子句

Fre*_*chs 6 java exception try-catch

如果有一个带有多个 catch 块的 try-catch,有没有办法将异常重新抛出到下一个(不是底层)catch 子句?

例子:

try {

  // some exception can occur here

} catch (MyException ex) {

  // do something specific

  // rethrow ex to next catch

} catch (Exception ex) {

  // do logging stuff and other things to clean everything up
}
Run Code Online (Sandbox Code Playgroud)

MyException抛出 a 时,我想处理该异常的特定内容,但随后我想处理一般异常 ( catch (Exception ex))。

我不想使用 finally-block 并且 Java 7 Multi-catch 在这里也没有帮助。

任何想法如何处理这个,我想避免每个捕获块中的冗余内容。Exception只捕获然后instanceof用于我的特定东西更好吗?

谢谢。

Ren*_*sen 4

public void doStuff()
{
   try
   {

     // some exception can occur here

   } catch (MyException ex){

     // do something specific

     cleanupAfterException(ex);

   } catch (Exception ex) {

     cleanupAfterException(ex);
   }
}

private void cleanupAfterException(Exception ex)
{
   //Do your thing!
}
Run Code Online (Sandbox Code Playgroud)

我想这样的事情会做吗?