特定の例外が既にキャッチされていても、スローされたときに通知を受け取る方法があるかどうかを知りたいです。
例外をスローした基礎となるフレームワークによってキャッチされる例外があります。私は、コードを実行するためのトリガー ポイントとして、try-catch の外側 (本質的にそれを囲む) からこの例外を使用しようとしており、それを行う方法を見つけようとしています。
それを行う方法はありますか?
ありがとう!
特定の例外が既にキャッチされていても、スローされたときに通知を受け取る方法があるかどうかを知りたいです。
例外をスローした基礎となるフレームワークによってキャッチされる例外があります。私は、コードを実行するためのトリガー ポイントとして、try-catch の外側 (本質的にそれを囲む) からこの例外を使用しようとしており、それを行う方法を見つけようとしています。
それを行う方法はありますか?
ありがとう!
あなたは文脈を与えなかったので、ここにいくつかの可能性があります:
PS: わからない場合は、RuntimeExceptions
チェック済み例外をキャッチするのと同じ方法でキャッチできます。
例外がフレームワークによって既にキャッチされている場合、try-catch ブロックで例外をキャッチする方法はありません。
あなたはこれをやろうとしています:
try {
try {
throw new Exception();
} catch(Exception e) {
e.printStackTrace();
}
} catch(Exception e) {
System.out.println("Caught from the outside!");
}
これは失敗し、例外の StackTrace が出力されますが、「Caught from the outside!」印刷されません。これは、途中でスローされた例外がすでにキャッチされている、例外を 2 回キャッチできない、またはエラー処理の目的に反するという事実によるものです。エラーが処理されたら、それについて上位レベルに通知する必要はありません;)
私が理解していることから、ソースにアクセスできず、アクセス範囲外で例外がキャッチされて処理され、何かをさせたいですか?
私がすぐに思いつく唯一の解決策は PowerMock です。ライブラリを使用すると、コンストラクターをオーバーライドして、独自に作成したオブジェクトを返すことができます。通常はテストでのみ使用され、他の目的で使用することはお勧めしませんが、独自のコードを追加して、その例外のすべてのインスタンスを元の例外の拡張に置き換えるために使用できます。