prev up next

Previous: Sichtbarkeit Up: Klassenmethoden Next: Rekursion

Fehlerbehandlung

Generell ist der Programmierer verpflichtet seine Methoden robust zu implementieren. Darunter versteht man, dass eine Methode mit allen Werten, die ihr übergeben werden können, sinnvolle Resultate liefert.

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.


prev up next
Previous: Sichtbarkeit Up: Klassenmethoden Next: Rekursion