InputStream
und
OutputStream
(im JDK 1.2 findet eine Transition zu den Klassen
*Printer
und *Writer
statt) abgeleitet.
Diese Klassen sind abstrakt, d.h. das diese Klassen nicht instanziiert werden können, es müssen obligatorisch davon abgeleitete benutzt werden. Je nach Anwendungsart gibt es von den Grundstream-Klassen abgeleitete Klassen die für den jeweiligen Fall geeignet sind.
Hier sind ein paar:
Die Verschachtelung gibt die jeweilige Vererbungs-Relation an. Alle Klassen die von InputStream abgeleitet sind besitzen einen Konstruktor der als Argument einen InputStream nehmen. Analog besitzen alle von OutputStream abgeleitete Klassen einen Konstruktor der einen OutputStream als Argument nimmt.
In dem Beispiel wurde in der Methode openAFile
wurde der Fehler
abgefangen, in dumpFile wurde der eventuelle Fehler weitergeleitet.
Das spezifische an dieser Art der Fehlerbehandlung ist, daß nicht der Zwang besteht sich sofort mit etwaigen Fehlern abzugeben. Weiterhin, ist es somit möglich Code zu schreiben, der in den meisten Fällen funktioniert, in den anderen Fällen einfach und präzise an anderer Stelle abgefangen werden kann. Dies ist besonders nützlich wenn Bibliotheksfuntionen gebaut werden.
Ein direkter Vorteil liegt in der Tatsache, daß der Programm-Code lesbar bleibt, da nicht mit lauter Konsistenz-Tests verunstaltet.
Es gibt eine ganze Reihe von möglichen Exceptions, die Informationen in der API geben z.B. für die Standardbibliotheks-Objekte die Exceptions an die erscheinen können.
Es ist auch möglich indem eigenen Klassen von Exception abgeleitet werden, eigene Fehlerfälle zu definieren. Allerdings sollte von diesem System nicht allzu-stark gebrauch gemacht werden, da diese Art der Fehlerbehandlung ziemlich Rechenzeitintensif ist.
Document mit wml erzeugt von Bruno Böttcher unter Benutzung von öffentlichen Dokumenten.