Javaの例外:例外のmyexceptionが対応するtryステートメントの本体には決してスローされません
質問
このエラーのアイデアを理解しています。しかし、これがどのようにコールスタックで機能するか理解していないと思います。
ファイル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つは宣言されていない例外をキャッチすることです。
所属していません StackOverflow