6

複数の catch-blocks を含む try-catch がある場合、次の (下敷きではない) catch-clause に例外を再スローする方法はありますか?

例:

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
}

がスローされたとき、MyExceptionその例外に特定のものを処理したいのですが、一般的に例外を処理したいです(catch (Exception ex))。

私はfinally-blockを使用したくありません.Java 7 Multi-catchもここでは役に立ちません。

これを処理する方法については、各キャッチブロックで冗長なものを避けたいと考えています。キャッチしてから、特定のものExceptionに使用する方が良いですか?instanceof

ありがとう。

4

5 に答える 5

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!
}

私はこのようなことができると思いますか?

于 2013-10-09T08:24:31.660 に答える
1

tryステートメントをネストするだけです:

try {
  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
}

気になるところですが、「(下敷きではない)」というのはこういうことですか?

于 2013-10-09T08:23:27.043 に答える
0

複数の try catch を試すことができます。

try {

} catch(MyException ex) {
    try {

    } catch(Exception ex) {

    }
}
于 2013-10-09T08:21:47.283 に答える
0

確かにこれは関数の目的ですか?

try {
    doStuff();
} catch ( MyException e ) {
    doMyExceptionStuff();
    doGeneralExceptionStuff();
    throw e;
} catch ( Exception e ) {
    doGeneralExceptionStuff();
}
于 2013-10-09T08:28:11.827 に答える