prev up next

Previous: Wrapperklassen Up: Objektorientierte Programmierung Next: Abstrakte Datentypen

Exceptions

Über das Auslösen einer RuntimeException hinaus besteht in Java die Möglichkeit, eigene Fehlerklassen zu definieren. Dies bedeutet, dass bei Vorliegen eines fehlerhaften Zustands eine speziell entworfene Fehlerbedingung geworfen wird und längs der geschachtelten Aufrufhierarchie jede Methode versuchen kann, diese Fehlermeldung zu fangen. Dieses Konzept wird über die Vokabeln throw, try und catch realisiert.

Eine Fehlermeldung in Java ist also nichts weiter als ein Objekt, welches an der Stelle erzeugt wird, wo der Fehler aufgetreten ist und von dort aus zum Aufrufer der Methode geworfen wird.

Im folgenden Beispiel wird zunächst eine eigene, von der Klasse Exception abgeleitete, Fehlerklasse DatumException formuliert.

Source: DatumException.java     JavaDoc: DatumException.html    

In der Klasse AusnahmeDatum werden einzelne Parameter (vereinfacht, ein Monat darf immer 31 Tage haben) auf Korrektheit überprüft. Ein Konstruktor oder eine Methode, die eine Exception werfen kann, muss entsprechend deklariert sein. Dazu ist es notwendig, die Signatur um ein throws ExceptionName zu erweitern. Dadurch wird gekennzeichnet, dass man sich bei Verwendung dieser Methoden um eine Fehlerbehandlung kümmern muss.

Source: AusnahmeDatum.java     JavaDoc: AusnahmeDatum.html    

Wenn eine Methode verwendet wird, die eine Exception werfen kann, so muss diese auf irgendeine Art und Weise beachtet werden. So kann die geworfene Exception mittels catch abgefangen werden. In der Klasse TestDatum1 ist dies zu sehen:

Source: TestDatum1.java     JavaDoc: TestDatum1.html    

Die kritischen Teile werden innerhalb eines try-Blockes geschrieben. Direkt nach dem try folgt ein catch (ExceptionName e), in dem die Fehlerbehandlung erfolgt. Bei Auftreten einer Exception wird in diesem Falle nur der try-Block abgebrochen, nicht aber das ganze Programm. Nach Abarbeitung des catch-Blockes wird das Programm nach dem catch-Block fortgeführt.

Falls eine geworfene Exception nicht innerhalb des aufrufenden Kontextes behandelt werden soll, kann man die Verantwortung für die Behandlung des Fehlers an die nächsthöhere Ebene weiterleiten. Dies geschieht, indem man in der Signatur der Methode kenntlich macht, dass eine Exception geworfen werden kann.

Source: TestDatum2.java     JavaDoc: TestDatum2.html    

In der Klasse TestDatum2 wird der Fehler an die Kommandozeile, die in diesem Falle die nächsthöhere Ebene ist, weitergegeben und das Programm bricht ab. Die in der Exception vorhandene Fehlermeldung wird auf der Kommandozeile ausgegeben.


prev up next
Previous: Wrapperklassen Up: Objektorientierte Programmierung Next: Abstrakte Datentypen