next up previous
Nächste Seite: Fehlermeldungen des Laufzeitsystems Aufwärts: Das Laufzeitsystem (Arts) Vorherige Seite: Compilerunterstützung


Die Behandlung von Laufzeitfehlern

Viele Fehler in einem Quelltext können bereits zur Kompilationszeit eines einzelnen Moduls ausfindig gemacht werden. Dabei sind nicht nur syntaktische Fehler wie vergessene Strichpunkte oder unausgeglichene Klammerpaare eingeschlossen. Darüber hinaus können etwa fehlende Deklarationen, typeninkompatible Vergleiche oder Zuweisungen, Namenskonflikte und dergleichen mehr festgestellt werden. Selbst eine Division mit der Konstanten 0 (Null) wird vom Compiler beanstandet.

Leider gibt es noch einige Fehlersituationen, die der Compiler nicht zur Compilationszeit erkennen kann. Solche Fehler treten zur Laufzeit des Programms auf, weshalb sie Laufzeitfehler genannt werden.

Die Laufzeitfehler, die bei einem -Programm auftreten können, werden durch einen Fehlerzustand des Programms erzeugt. Diese Fehlerzustände werden entweder vom Prozessor oder vom Programm selbst erkannt.

Auf dem Amiga dürfte wohl allen die Reaktion des Betriebssystems auf Laufzeitfehler bekannt sein: die ``Guru Meditation``. Diese erscheint dann, wenn das Betriebssystem durch einen fehlerhaften Task (Prozess) so empfindlich gestört wurde, dass als Lösung nur der Neustart des Systems bleibt.

Eine Quelle für den (so hartnäckig) meditierenden Guru sind die Traps des Prozessors. Sobald der Prozessor einen ungültigen Zustand entdeckt, wird zur Fehlerbehandlung eine entsprechende Trap-Prozedur aufgerufen. Mögliche Gründe für diese Ausnahmezustände sind unter anderem die Division durch 0, ein Fehler bei der Adressierung einer Variablen, ein Bereichsfehler, der durch die CHK-Instruktion erkannt wurde oder eine explizite TRAP-Anweisung, wie sie der Compiler zum Erkennen der Laufzeitfehler generiert. Zur Vermeidung der ``Guru Meditation`` muss die Behandlung der Traps vom Laufzeitsystem übernommen werden.

Die Laufzeitfehler, die das Programm erkennt, werden durch Aufrufe von Prozeduren des Laufzeitsystems angezeigt. Diese Aufrufe können einerseits vom Compiler selbständig erzeugt oder vom Programmierer ins Programm eingefügt werden. Alle Möglichkeiten zur Erzeugung von Laufzeitfehlern durch den Programmierer sind aus der -Anweisung HALT entstanden. Diese Anweisung ist dafür gedacht, um im Fehlerfall ohne Ausweg das Programm zu beenden.

Neben der Anweisung HALT bietet das Laufzeitsystem dem Programmierer die Prozeduren Assert, BreakPoint, Error und Requester, sowie Exit und Terminate. Diese Prozeduren sind beim Modul Arts im Kapitel 7, Bibliotheksmoduln, genauer beschrieben.


next up previous
Nächste Seite: Fehlermeldungen des Laufzeitsystems Aufwärts: Das Laufzeitsystem (Arts) Vorherige Seite: Compilerunterstützung
Claudio Nieder 2000-11-12