Ausnahmen Java: Ausnahme MyException wird nie im Körper der entsprechenden try-Anweisung geworfen
Frage
verstehe ich die Idee für diesen Fehler. Aber ich glaube, ich verstehe nicht, wie das funktioniert auf dem Call-Stack.
Datei Main.java:
public static void main(String[] args) {
try {
Function1();
} catch (myException e) {
System.out.println(e.getMessage());
}
}
public static void Function1() {
Function2();
}
Function2 existiert in einer anderen Datei:
File2.java
public void Function2() throws myException {
....
}
So durch mehrere Anrufe (auf der Call-Stack) I Function2 haben, die angibt, die Anforderung "wirft MyException". Wie kommt die Hauptfunktion (wo der Fehler bei gerichtet wird) nicht erkennt, dass ich MyException auf der ganzen Linie zu werfen?
Jede Führung in denen das ‚Loch‘ in meinem „Ausnahme Wissen“ Lügen würde sehr geschätzt werden.
aitee,
Lösung
Das Loch ist, dass Function2
erklärt, dass es die Ausnahme auslöst, aber Function1
nicht. Java nicht seinen Weg durch mögliche Aufrufhierarchien graben, sondern geht direkt durch das, was Sie in throws
Anweisungen deklarieren.
Function1
entkommt mit nicht den Ball wahrscheinlich erklärt, weil myException
ein RuntimeException
ist.
Andere Tipps
Ihr Problem ist, dass Function1()
erklärt nicht, dass es throws myException
- was bedeutet, dass es 2 Kompilierung Fehler sein sollte. Man über die Ausnahme nicht abgefangen oder erklärt zu werden, und eine über die Ausnahme abfangen, die nicht deklariert wird,