Ausnahmen Java: Ausnahme MyException wird nie im Körper der entsprechenden try-Anweisung geworfen

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

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,

War es hilfreich?

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,

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top