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.

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