Exception

Aus ProfilGlossar
Wechseln zu: Navigation, Suche
Für diese Seite gibt es Sicherheitseinschränkungen.

Eine Exception oder Ausnahme(-situation) ist ein Verfahren, Informationen über Programmzustände (meist infolge von Fehlern) an andere Programmebenen zur weiteren Behandlung weiterzureichen. Exceptions sind meist die Folge von unvorhergesehenen Ereignissen im Programm. Eine Ausnahme kann "geworfen" (die Information über den Ausnahmezustand wird gesendet) und "gefangen" (die Information über den Ausnahmezustand wird empfangen) werden.

In Java unterscheidet man "Checked Exception" (dt. etwa: überprüfte Ausnahme) und "Unchecked Exception". Bei "Checked Exceptions" überprüft bereits der Compiler, ob an den Stellen wo sie auftreten können auch Code zum Abfangen (und damit zur Fehlerbehandlung) vorhanden ist. So kann Programm-Code zum Wiederholen der entsprechenden Aktion oder zum Wiederherstellen eines fehlerfreien Programmzustands an diesen Stellen quasi erzwungen werden. Auf diese Weise soll robuster Code entstehen. Ein Beispiel sind IOExceptions.

"Unchecked Exceptions" werden in Java dort verwendet, wo in der Regel ein fehlerfreier Programmzustand nicht (oder mit nicht vertretbarem Aufwand) wiederhergestellt werden kann. Das Auftreten einer NullPointerException beispielsweise deutet auf einen Programmierfehler hin, der somit nicht erwartet werden kann. Vorausschauende Gegenmaßnahmen zu programmieren ist deshalb (zumindest auf feingranularer Ebene) nicht möglich. Unchecked Exceptions werden in Anwendungen allerdings auf höherer Ebene in der Regel gefangen um hier ggf. einen Fehlerdialog anzuzeigen und das Programm möglichst sauber zu beenden oder in einen Ausgangzustand zu versetzen.

Eine spezielle Art von Ausnahmen in Java heißen "Error". Errors signalisieren schwerwiegende Fehlerzustände, die eine Applikation nicht versuchen sollte zu reparieren, weil ein sinnvolles Weiterarbeiten normalerweise nicht möglich ist. Fehlerzustände der virtuellen Maschine (JVM) selbst werden meist durch solche Errors signalisiert. Ein Beispiel ist der OutOfMemoryError.