try / catch ·
finally ·
throw ·
throws ·
Checked / Unchecked ·
try-with-resources
Exception Handling ist in Java ein zentrales Konzept für die Fehlerbehandlung. Es ermöglicht die kontrollierte Reaktion auf Laufzeitfehler und die Gewährleistung der Programmstabilität.
try-catch fängt Exceptions ab und verhindert, dass das Programm abstürzt. Der try-Block enthält den gefährdeten Code, der catch-Block behandelt die Exception.
| Exception | Beschreibung |
|---|---|
| Exception | Oberklasse aller Exceptions (checked) |
| RuntimeException | Oberklasse aller unchecked Exceptions |
| NullPointerException | Zugriff auf null-Referenz |
| ArrayIndexOutOfBoundsException | Ungültiger Array-Index |
| IllegalArgumentException | Ungültiges Methodenargument |
| IOException | Ein-/Ausgabe-Fehler (checked) |
| ClassNotFoundException | Klasse nicht gefunden (checked) |
| SQLException | Datenbank-Fehler (checked) |
finally wird immer ausgeführt – unabhängig davon, ob eine Exception aufgetreten ist oder nicht. Es wird typischerweise für Aufräumarbeiten (z.B. Schließen von Ressourcen) verwendet.
finally.
throw wirft explizit eine Exception. Sie können sowohl Standard-Exceptions als auch eigene Exception-Klassen werfen.
throws deklariert, dass eine Methode eine oder mehrere Exceptions werfen kann. Aufrufer müssen diese Exceptions entweder selbst behandeln oder weiterdeklarieren.
| Regel | Beschreibung |
|---|---|
| Checked Exceptions | Müssen deklariert oder abgefangen werden (IOException, SQLException, ...) |
| Unchecked Exceptions | Müssen nicht deklariert werden (RuntimeException, NullPointerException, ...) |
| Mehrere Exceptions | Können mit Komma getrennt werden: throws IOException, SQLException |
| Vererbung | Eine überschriebene Methode darf nur Exception-Typen deklarieren, die weniger oder gleich spezifisch sind |
throws IOException statt throws Exception), um dem Aufrufer mehr Informationen zu geben.
Checked Exceptions müssen zur Compile-Zeit behandelt werden (try-catch oder throws). Unchecked Exceptions (RuntimeException) müssen nicht behandelt werden.
| Eigenschaft | Checked Exception | Unchecked Exception |
|---|---|---|
| Basisklasse | Exception (außer RuntimeException) | RuntimeException |
| Behandlung | try-catch oder throws erforderlich | Nicht erforderlich (optional) |
| Prüfung | Zur Compile-Zeit | Zur Laufzeit |
| Beispiele | IOException, SQLException, ClassNotFoundException | NullPointerException, ArithmeticException, ArrayIndexOutOfBoundsException |
| Wann verwenden | Bei erwartbaren, behebbaren Fehlern | Bei Programmfehlern (nicht behebbar) |
try-with-resources (ab Java 7) schließt Ressourcen automatisch, die das Interface AutoCloseable implementieren. Die Ressourcen werden in umgekehrter Reihenfolge ihrer Deklaration geschlossen.
| Klasse | Beschreibung |
|---|---|
| FileInputStream | Datei-Eingabestrom |
| FileOutputStream | Datei-Ausgabestrom |
| BufferedReader | Pufferleser |
| BufferedWriter | Pufferschreiber |
| Connection (JDBC) | Datenbankverbindung |
| Statement (JDBC) | SQL-Statement |
| ResultSet (JDBC) | SQL-Ergebnismenge |
| Scanner | Parser für Eingaben |
try-finally.
try
catch
finally
throw
throws
try-with
try { ... } catch (Exception e) { ... } ·
throw new Exception("msg"); ·
void m() throws IOException { ... }