Exception
Unchecked Exceptions
- Fehler im Programm, die zu einem Abbruch führen.
- Sie sind Kinder von RuntimeException
- Sie müssen weder behandelt noch in der Methodensignatur erwähnt werden
Checked Exceptions
- Fehler in der Umgebung des Programms (fehlende Datei, Abbruch in der Netzwerkverbindung, …)
- Sie sind Kinder von Exception
- Sie müssen entweder behandelt oder in der Methodensignatur erwähnt werden.
Exception werfen
throw new Exception("Fehler!");
- Wird eine Exception geworfen, wird die Bearbeitung der aktuellen Methode beendet.
-
Als nächster wird überprüft, ob diese Exception in der aktuellen Methode behandelt wird.
-
Ist dies nicht der Fall wird die Methode an sich abgebrochen und in die aufrufende Methode
zurückgekehrt.
-
Wird die Exception auch dort nicht behandelt, wird auch diese Methode abgebrochen und zu
deren aufrufender Methode zurückgekehrt.
-
Dies wird so oft wiederholt, bis entweder die Exception behandelt wird oder das Programm in
Gänze abgebrochen wird.
Exception fangen
try {
throw new Exception("Fehler!");
} catch (Exception e) {
e.printStackTrace();
} finally {
// z.B. Dateien, Datenbanken, ... schließen
}
- Mit Hilfe eines ty-catch-blocks wird eine Exception behandelt
-
Wird innerhalb des try-Blocks eine Exception geworfen, wird untersucht, ob ein catch-Block
für diese Exception (bzw. für eine seiner Eltern) existiert.
-
Es können mehrere catch-Blöcke angegeben werden, um unterschiedliche Exceptions
unterschiedlich zu behandeln.
-
Trifft ein catch-Block zu, wird dieser abgearbeitet und die Methode nach dem catch-Block
fortgesetzt.
-
Trifft kein catch-Block auf die geworfene Exception zu gilt die Exception als unbehandelt.
-
Der optionale finally-Block wird auf jeden Fall durchlaufen, egal ob im try-Block eine
Exception geworfen wurde oder nicht.
- Ist ein finally-Block vorhanden, darf der catch-Block fehlen.
try (FileReader reader = new FileReader(...)) {}
-
Bei try-with-resources können ein oder mehrere (durch Strichpunkt getrennte)
Resourcen-Definitionen angegeben werden.
-
Diese Ressourcen werden nach Beendigung des try-catch-Blocks geschlossen, egal ob eine
Exception geworfen wurde oder nicht.
- Die Ressourcen müssen dafür über eine close Methode verfügen.
Exception weiterreichen
public void test() throws Exception {
throw new Exception("Fehler!");
}
-
Wird eine CheckedException nicht in der aktuellen Methode abgearbeitet, muss dies in der
Methodensignatur vermerkt werden.
- Mehrere Exceptions werden durch Komma getrennt.