私は次のコードを持っています:
try {
/* etc. 1 */
} catch (SomeException e) {
/* etc. 2 */
} catch (SomeException e) {
/* etc. 3 */
} finally {
/*
* do something which depends on whether any exception was caught,
* but should only happen if any exception was caught.
*/
/*
* do something which depends on whether an exception was caught and
* which one it was, but it's essentially the same code for when no
* exception was caught.
*/
}
ですから、キャッチした例外を保持したいと思います。すべてのcatchブロックの変数に割り当てる以外に、これを行う方法はありますか?
編集:明確にするために、tryブロックの外部でスコープが設定された変数を使用することを示唆する回答を投稿しないでください。私はそれができることを知っています、この質問の全体のポイントは代替案を見つけることです。
さて、私が本当に望んでいるのは、より柔軟なcatchブロックです。これにより、複数のcatchブロックが同じ例外をキャッチできます。たとえば、catch(Exception e)
すでにキャッチされている場合でもすべてをキャッチし、例外catch(Exception e) except(NullPointerException, IllegalArgumentException)
をスキップします。また、catchブロックはcatchingcontinue;
、同じtryブロックの他のすべてのcatchブロックcatchingbreak;
をスキップし、最後にさえスキップすることができます。