Man betrachte folgende Klassenmethode fakultaet(), die alle positiven Zahlen von 1 bis zum übergebenen Wert aufmultipliziert und das Ergebnis zurückliefert:
public static int fakultaet(int n {
int f = 1;
for (int i=1;i<=n;i++) {
f = f * i;
}
return f;
}
Falls für n ein Wert kleiner als 0 übergeben wird,
liefert die Methode das (offenbar falsche) Ergebnis 1 zurück.
Falls für n ein zu großer Wert übergeben wird, entsteht ein
Integer-Overflow. Korrekt
wäre es, wenn die
Methode dem Benutzer mitteilen kann, ob der übergebene Parameter im
korrekten Wertebereich liegt. Dies könnte über den Rückgabewert geschehen
(z.B. -1); besser wäre es jedoch, das Ergebnis der Berechnung von der
Fehlermeldung zu trennen. Hierzu kann in Java eine Methode eine RuntimeException werfen. Wird diese RuntimeException nicht
weiter behandelt (siehe Kapitel 8), führt sie zu einem Programmabbruch.
Dies ist eine recht drastische Maßnahme, allerdings ist es besser, als
eine Berechnung mit fehlerhaften Werten durchzuführen ohne es dem Benutzer
mitzuteilen.
Die Fehlerbehandlung mit einer RuntimeException kann wie folgt aussehen:
public static int fakultaet(int n) {
if (n<0) throw new RuntimeException("Obacht: Parameter negativ");
if (n>12) throw new RuntimeException("Obacht: Parameter zu gross");
int f = 1;
for (int i=1;i<=n;i++) {
f = f * i;
}
return f;
}
Bei der Erzeugung einer RuntimeException kann eine Fehlermeldung
angegeben werden. Diese wird bei Programmabbruch auf der Kommandozeile
ausgegeben. Die erzeugte RuntimeException wird dann mit dem
Schlüsselwort throw aus der Methode zum Aufrufer der Methode
geworfen und die Abarbeitung der Methode endet an dieser Stelle.
Generell sollte eine Methode fehlerhafte Eingaben ablehnen, aber auch der Benutzer der Methode sollte vorher sicherstellen, dass erst gar keine fehlerhaften Werte an eine Methode übergeben werden.