3

私は Java シーンは初めてですが、現在割り当てられた評価に取り組んでいます。クラス関数内で例外をキャッチして別の例外をスローする方法があるかどうか疑問に思っているので、クラス関数を呼び出した関数はスローされた最初の例外について知る必要はありません。

例えば

public void foo() throws MasterException {
    try {
        int a = bar();
    } catch (MasterException e) {
        //do stuff
    }
}

public void bar() throws MasterException, MinorException {
    try {
        int a = 1;
    } catch (MinorException e) {
        throw new MasterException();
    }
}

この例で、私が達成しようとしていることを説明できれば幸いです。基本的には、呼び出し元の関数が について知らないようにしたいMinorException

4

5 に答える 5

3

, MinorExceptionの宣言から削除しbarて完了です。私もやります:

throw new MasterException(e);

それをサポートするコンストラクターがあった場合MasterException(その標準はそれを行い、Exceptionクラスは行います)。

于 2012-05-04T00:25:42.913 に答える
1

絶対。次の行を変更します。

public void bar() throws MasterException, MinorException

これに:

public void bar() throws MasterException

他のすべては、あなたが書いたとおりに動作するはずです。

于 2012-05-04T00:24:21.807 に答える
1

bar() の throws 節から MinorException を削除するだけです。

于 2012-05-04T00:25:27.213 に答える
0
  1. throws MasterException method の宣言から削除 しfoo()ます。その理由は、MasterException がキャッチされる準備ができているため、とにかく発生しないことは明らかです。

  2. , MinorExceptionmethod の宣言から削除しbar()ます。

于 2012-05-04T04:38:21.837 に答える
0

あなたがそれをキャッチしているので、私は foo() から MasterException を削除し、他の回答が言うように、bar() から MinorException を削除します。

また、MasterException または MinorException が RuntimeException のサブクラスである場合は、宣言する必要はありません。たとえば、http ://docs.oracle.com/javase/tutorial/essential/exceptions/runtime.html を参照してください。

于 2012-05-04T00:28:51.333 に答える