⚠️ 1. Checked vs. Unchecked Exceptions
In Java gibt es zwei Hauptkategorien von Ausnahmen:
extends Exception)
Compiler fordert Behandlung per try-catch oder throws. Für vorhersehbare Fehler im Systemumfeld (Netzwerk, I/O, Payment).
extends RuntimeException)
Keine Deklarationspflicht. Signalisiert Programmierfehler (NullPointer, IndexOutOfBounds) oder Invarianten-Verletzung.
🛡️ 2. Sichere Ressourcenverwaltung mit try-with-resources
Jede Klasse, die java.lang.AutoCloseable implementiert, kann innerhalb runder Klammern in einem try(...) Block deklariert werden. Die JVM ruft am Ende garantiert die close()-Methode auf – selbst wenn unvorhergesehene Ausnahmen auftreten.
try (AuditLogSession session = new AuditLogSession("TXN-100")) {
session.log("Transaktion gestartet");
bankAccount.transfer(target, amount);
session.log("Transaktion abgeschlossen");
} catch (InsufficientFundsException e) {
logger.error("Überziehung verhindert: " + e.getMessage());
} // session.close() wird HIER deterministisch ausgeführt!
Ein Mitarbeiter betritt den Serverraum mit einer Zutrittskarte (AutoCloseable).
try-with-resources ist die automatische Drucktür: Egal, ob der Techniker seine Arbeit erfolgreich beendet oder wegen eines Feueralarms fluchtartig den Raum verlässt – die Schleuse verriegelt sich beim Verlassen stets von selbst und verhindert jedes Datenleck!
📑 3. Cheat-Sheet: Exception Best Practices
| Muster | Code-Beispiel | Empfehlung |
|---|---|---|
| Try-With-Resources | try (Resource r = new Resource()) |
Immer bevorzugen vor manuellen finally-Blöcken |
| Multi-Catch | catch (SQLException | IOException e) |
Verhindert redundanten Code für gleichwertiges Handling |
| Exception Chaining | throw new ServiceException("...", cause); |
Niemals den Original-Stacktrace verwerfen (Ursache erhalten) |
| Specific Exceptions | throw new IllegalArgumentException(...) |
Niemals generisches throw new Exception() werfen |
🧠 Diagnostischer Selbst-Check
Überprüfe dein Verständnis von Sprach-Features, Speicherverwaltung und Enterprise-Architektur, bevor du den Code in der Web-IDE schreibst.
🎯 Aufgaben & Checkliste in Aufgabe.java
Ein leerer catch (Exception e) {} Block („Swallowed Exception“) ist eine der gefährlichsten Fehlerquellen im Enterprise-Umfeld. Mindestens loggen oder als Business-Exception weiterwerfen!