Universität Ulm, Fakultät für Mathematik und Wirtschaftswissenschaften, SAI

WS 2000/01 || Entwicklung objekt-orientierter Bibliotheken || Beispiele

String80s


TestIt String80s

Dieses Beispiel wurde dem Streams Tutorial entnommen, das auch in gedruckter Form im Referenz-Manual zur Verfügung steht. Es zeigt, wie Ausfallsituationen erkannt werden, wie entsprechende objekt-bezogene Ereignisse generiert und auf eine relativ einfache Weise behandelt werden können.

String80s
Eine kleine Stream-Implementierung, die als Repräsentierung eine Zeichenkette mit 80 Zeichen verwendet.

TestIt
Ein zugehöriges Testmodul, das versucht, einen Fehler durch Überfüllung zu provozieren. Es lohnt sich, einen genaueren Blick auf die Ausgabe dieses Programms zu werfen:
oberon$ testit
testit: error: write operation failed
        maximal string length exceeded
1. This is a string which hopefully fits into 80 chars.
oberon$ 

Die Fehlermeldung, die Conclusions.Conclude generiert hat, besteht aus zwei Zeilen: Die erste Zeile beginnt mit dem Namen des Programms, gefolgt von ``error:'', das Errors.error entspricht und endet mit einer Fehlermeldung, die Streams generiert hat. In der zweiten Zeile ist die Fehlermeldung von String80s.

Beide Fehlermeldungen entsprechen den beiden Fehlerereignissen, die hier generiert worden sind. Zunächst ging eine Write-Operation bei String80s schief, worauf nicht nur String80s ein Fehlerereignis generierte, sondern auch das aufrufende Modul Streams. Diese Fehlerereignisse, die an dem Stream hängen, werden von Conclusions.Conclude in umgekehrter Reihenfolge ausgegeben, so daß sich die gesamte Fehlermeldung folgendermaßen lesen läßt:

  1. Eine Write-Operation ging schief, weil
  2. die maximale Länge der zugrundeliegenden Zeichenkette erreicht worden ist.

Die Quellen stehen als Shell-Archiv zur Verfügung.
WS 2000/01 || Entwicklung objekt-orientierter Bibliotheken || Beispiele

Andreas Borchert, 4. Dezember 2000