Javaの例外:例外のmyexceptionが対応するtryステートメントの本体には決してスローされません

StackOverflow https://stackoverflow.com/questions/4317643

質問

このエラーのアイデアを理解しています。しかし、これがどのようにコールスタックで機能するか理解していないと思います。

ファイルmain.java:

public static void main(String[] args) {
    try {
         Function1();
      } catch (myException e) {
      System.out.println(e.getMessage());
    }
}
public static void Function1() {
    Function2();
}

function2は別のファイルに存在します:

file2.java

public void Function2() throws myException {
     ....
}

したがって、いくつかの呼び出し(コールスタックの下)を通じて、「myexceptionをスローする」要件を指定するfunction2があります。どうして主な関数(エラーが向けられている場合)は、MyExceptionをラインに投げかけることを認識していないのですか?

私の「例外知識」の「穴」がどこにあるかについてのガイダンスは大歓迎です。

aitee、

役に立ちましたか?

解決

穴はそれです Function2 それが例外をスローすることを宣言しますが、 Function1 ではない。 Javaは、可能なコール階層を通過する方法を掘り下げませんが、あなたが宣言するものによって直接通ります throws ステートメント。

Function1 おそらくスローを宣言しないことで逃げます myException aです RuntimeException.

他のヒント

あなたの問題はそれです Function1() それを宣言しません throws myException - つまり、2つのコンパイルエラーが必要なことを意味します。1つは、キャッチまたは宣言されていない例外について、もう1つは宣言されていない例外をキャッチすることです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top