0

1、2、3、4、5などの5つのメソッドがあります。method1からmethod2を呼び出し、method2からmethod3を呼び出しています。Method5で例外が発生し、それをtry-catchブロックで処理しているとすると、Method1でこれをどのように知ることができますか?

4

4 に答える 4

3

例外の伝播を調べたいと思うかもしれません。この他の質問はそれをかなりよく説明しています。基本的に、例外がtry-catchにない場合は、呼び出しスタックの最上位になるか、キャッチされるまで、呼び出し先にバブルアップします。

于 2012-05-09T04:15:38.713 に答える
1

method1とmethod5の両方がアクセスできる変数/フラグを設定する必要があります。同じクラスのフィールドのようなものが機能するはずです。

private String exceptionHappened = "";

private void method1() {
    method(2);
    // Here I can check value of exceptionHappened
}

//... methods 2-4

private void method5() {
    try {
      // ...
    } catch (Exception e) {
      this.exceptionHappened = "In method 5";
    }
}
于 2012-05-09T04:18:01.260 に答える
0

例外は、キャッチされない場合、メインメソッドに到達するまで呼び出し階層で伝播します。メソッドが呼び出し階層に例外があったかどうかを知りたい場合try-catchは、例外フローを制御するためにブロックする必要があります。

于 2012-05-09T04:18:17.937 に答える
0

ユーザー定義の例外を作成し、そのクラスにメソッド名を格納するためのプロパティを設定します。今度は、method5で、catchブロックで、メソッド名を「methodname」プロパティに設定することによって作成されたユーザー定義の例外をスローします。その例外をfirmethod1(またはrootメソッド)までスローし、methodnameプロパティの値に基づいて、どのメソッドで例外がスローされたかを確認できます。

于 2012-05-09T05:22:28.433 に答える