Exception Handling – Exception-Hierarchie in Java
Im Vorgängerartikel der Exception-Handling-Serie bin ich bereits auf Fehlerkategorien und ihre Behandlung eingegangen. Im vorliegenden Artikel erfolgt nun eine kurze Einführung in die Exception-Hierarchie bei Java und die Konsequenzen.
Errors
- schwerwiegende Probleme mit der Laufzeitumgebung, die mit ziemlicher Sicherheit nicht wiederherstellbar sind
- z.B. OutOfMemoryError, LinkageError und StackOverflowError
- Sie bringen im Allgemeinen das Programm oder einen Teil des Programms zum Absturz.
- Nur eine gute Protokollierungspraxis hilft, die genauen Fehlerursachen zu ermitteln.
Checked Exceptions
- leiten von Exception ab
- throws in der Methodensignatur nötig, Zwang zur Behandlung
Unchecked Exceptions
- leiten von RuntimeException ab
- keine throws in der Methodensignatur nötig, keinen Zwang zur Behandlung
Zu beachten
Fängt man eine übergeordnete Exception, werden damit auch alle untergeordneten Exceptions gefangen.
Konsequenzen:
- Fängt man allgemeine, unspezifische Exceptions, werden möglicherweise bei Weiterentwicklung der Anwendung in Zukunft auch Exceptions gefangen, die man ursprünglich an der Stelle gar nicht behandeln wollte. Daher ist es ratsam, spezifische Exceptions zu werfen und zu fangen und dazu gegebenenfalls eigene anzulegen.
- Fangen der unspezifischen Klasse Exception fängt auch RuntimeExceptions
- Fangen von Throwable fängt auch Errors
Bildnachweis:
– Das Titelbild zur Blogserie „Exception Handling“ basiert auf einer Grafik von mohamed_hassan auf Pixabay.
– Bild Exception-Hierarchie: Eigene Darstellung basierend auf JavaSE Javadoc