Menu Content/Inhalt
Startseite arrow Java arrow Ausnahmen (Exceptions) in Java
Ausnahmen (Exceptions) in Java Drucken E-Mail

Was sind Ausnahmen / Exceptions?

Beim Progammieren treten immer wieder Fehler auf. Im günstigsten Fall handelt es sich um syntaktische Fehler, die vom Compiler erkannt werden können. Der meldet die Fehler und sie können sofort vom Programmierer behoben werden. Nicht so einfach zu finden sind logische Fehler, weil diese erst zur Laufzeit des Programms auftreten. Um auf solche Fehler reagieren zu können bietet Java eine recht komfortable Ausnahme-Behandlung (Exception-Handling), die im folgenden vorgestellt wird. Fehler werden in diesem Zusammenhang auch als Ausnahmen bezeichnet.

Arten von Ausnahmen

Es gibt unterschiedliche Arten von Ausnahmen in Java. Die folgende Klassenhierachie zeigt den Zusammenhang der einzelnen Ausnahme-Klassen. Jede dieser Klassen hat nochmal mehrere Unterklassen.

 

 

Erzeugen von Ausnahmen

Nicht nur die Runtime-Umgebung von Java kann Ausnahmen erzeugen, sondern man selbst als Programmierer auch. Das Erzeugen von Ausnahmen wird in Java als Werfen (throwing) von Ausnahmen bezeichnet. Folgendes Beispiel zeigt, wie man eine Ausnahme vom Typ ArithmeticException in Java wirft.

 

Wenn die übergebene Zahl nicht grösser als Null ist wird von dieser Methode ein Ausnahme-Objekt vom Typ ArithmeticException erzeugt und geworfen. Damit wird die nächst höhere Methode dazu verpflichtet, diese Ausnahme zu behandeln.

 

Behandlung von Ausnahmen

Wenn man in Java ein Objekt einer Klasse benutzt, die eine Ausnahme werfen kann, dann muss man sich festlegen, wie man diese Ausnahme behandelt, falls sie auftritt, ansonsten bekommt man Ärger mit dem Compiler. Es gibt zwei Möglichkeiten mit einer Ausnahme umzugehen.

Weiterleiten der Ausnahme

Man leitet die Ausnahme an die nächst höhere Methode in der Hierachie der Aufrufe weiter. Dazu muss man lediglich in der Signatur der entsprechenden Methode kennzeichnen, dass diese eine Ausnahme wirft. Das geht mit

throws Ausnahmetyp

wobei throws ein Schlüsselwort ist und Ausnahmetyp der entsprechende Klassenname der Ausnahme, die geworfen wird, ist.

Behandeln der Ausnahme

In folgendem Beispiel wird eine Ausnahme behandelt. Dazu wird der Teil, in dem die Ausnahme geworfen wird, mit einem try-catch-Block umschlossen. In diesem Beispiel wird einfach ein Objekt der Ausnahmen-Oberklasse Exception abgefangen, damit werden alle möglichen Fehler abgefangen, es wird jedoch nicht spezifisch auf die unterschiedlichen Fehler reagiert.

Es kann auch mehrere catch-Blöcke pro try-Klausel geben um Fehler spezifischer behandeln zu können. Ausserdem kann man zusätzlich einen finally-Block einfügen, der auf jeden Fall beim Auftreten einer Ausnahme ausgeführt wird.