5.3 | Exceptions sind Objekte |
Alle Errors und Exceptions sind in Klassen definiert, die von Throwable abstammen. Das erlaubt dem Programmierer, auch eigene Exceptions zu definieren, indem er einfach eine Unterklasse von einer vorhandenen Exception ableitet. Das kann sinnvoll sein, wenn es in einem Programm eine Fehlersituation gibt, die sich nicht angemessen durch die vordefinierten Exceptions charakterisieren lässt.
Bereits bei den Standardbibliotheken existiert eine Vererbungshierarchie. So gibt es beispielsweise eine IndexOutOfBoundsException, die allgemein das Überschreiten eines Indexbereichs signalisiert, und davon abgeleitet eine ArrayIndexOutOfBoundsException, die das Überschreiten eines Array-Index anzeigt.
Der überwiegende Teil der Exception-Klassen enthält lediglich zwei Konstruktoren. Der eine dient zur Erzeugung einer Exception ohne Fehlermeldung, beim anderen kann dem Konstruktor eine Meldung übergeben werden, in der man Angaben über die konkrete Fehlersituation machen kann:public class NullPointerException extends RuntimeException { public NullPointerException() { super(); } public NullPointerException(String s) { super(s); } }Die NullPointerException gehört zur Standardbibliothek und wird unter anderem dann ausgelöst, wenn versucht wird, eine Methode über einen Verweis aufzurufen, der den Wert null hat. Prinzipiell können Exceptions aber wie andere Objekte auch Datenelemente und Methoden besitzen. Das Hinzufügen eines Datenelements zu einer Exception könnte sinnvoll sein, wenn zur näheren Charakterisierung eines Fehlerzustands der Wert einer Variable hilfreich ist.