Weitere aktuelle Java-Titel finden Sie bei dpunkt.
 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index


5.12

Umsetzen von Exceptions


Aus Gründen des Designs oder der Kapselung kann es vorkommen, dass eine Exception, die in einer Methode auftritt, nicht direkt an den Aufrufer weitergeleitet, sondern zunächst abgefangen und stattdessen eine andere ausgelöst wird.

Mit dieser Technik lassen sich mehrere verschiedene Exceptions, die in der Implementierung einer Methode auftreten können, auf eine einzige abbilden. In vielen Fällen reicht es aus, dem Aufrufer nur mitzuteilen, dass eine Operation fehlgeschlagen ist, und nicht, aus welchem Grund. Exceptions, die streng genommen auf Implementierungsdetails beruhen, können so vor dem Aufrufer gekapselt werden.

Weiterhin kann so der im Abschnitt 5.10 diskutierten Problematik der Exceptions beim Schnittstellen-Design begegnet werden. Wenn in der überschriebenen Methode eine Exception auftreten kann, die nicht in der throws-Klausel enthalten ist, kann man sie abfangen und stattdessen eine der vorgesehenen Exceptions auslösen.

In einem Interface, das eine Methode zum Lesen von Zahlen definiert, kann man sich darauf beschränken, eine allgemeine Exception zu deklarieren, ohne sich darum zu kümmern, welche konkreten Fehlerursachen in den implementierenden Klassen vorkommen können:
  public interface NumberInput {
    int readNumber() throws NumberInputException;
  }
Wenn nun eine Klasse geschrieben wird, die dieses Interface implementiert und die die Zahlen aus einer Textdatei liest, müssen die in der Implementierung auftretenden Exceptions umgesetzt werden:
  public int readNumber() throws NumberInputException {
    int num = 0;
    String line;
    try {
      line = in.readLine();
      num = Integer.parseInt(line);
    }
    catch(NumberFormatException e) {
      throw new NumberInputException();
    }
    catch(IOException e) {
      throw new NumberInputException();
    }
    return num;
  }


 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index

Copyright © 2002 dpunkt.Verlag, Heidelberg. Alle Rechte vorbehalten.