ON ERROR

Aus C64-Wiki

Wechseln zu: Navigation, Suche
ON ERROR
Format: ON ERROR: <befehl>
Parameter
befehl: GOTO 10000 (Beispiel)
Einordnung
Typ: Anweisung
Kontext: Fehlerkontrolle
Aufgabe: Fehler während des Programmlaufs abfangen
Shortcut: keiner
Verwandte Befehle
NO ERROR - OUT - ERRN - ERRLN


Dieser Artikel beschreibt das Simons'-Basic-Schlüsselwort ON ERROR.

Typ: Anweisung
Syntax: ON ERROR: <befehl>

Mit ON ERROR wird die Kontrolle, ob Fehler zu einer Fehlermeldung und einem damit verbundenen Programmabbruch führen, vom Interpreter ans Programm selbst übergeben. Da Fehler jederzeit im Programm auftauchen können, sollte ON ERROR gleich am Anfang des Programms stehen, am besten in der ersten Zeile. In der gleichen Zeile folgt auf den ON-ERROR-Befehl ein Befehl, der festlegt, was bei einem Programmfehler geschehen soll. Da auf einer einzigen Zeile nicht Platz genug für viel Information ist, setzt man hier üblicherweise einen Sprung an eine andere Stelle im Programm ein, z.B. ON ERROR: GOTO 10000.

Dort könnte man dem User mitteilen, welcher Fehler vorlag (ERRN) und in welcher BASIC-Zeile er aufgetreten ist (ERRLN), damit er die Ursache des Fehlers beheben kann.

Leider verlässt Simons' Basic den Fehlerabfang-Modus nicht automatisch, wenn ein Programm beendet oder unterbrochen wird, so dass in den Zeilen der Benutzerinformation auf keinen Fall NO ERROR vergessen werden darf, und zwar sollte dieser Befehl gleich zu Anfang der Informationsroutine erfolgen. Wird das vergessen, führt jede Eingabe im Direktmodus lästigerweise auch dorthin, da ja die Fehlerursache noch nicht behoben wurde. Der Befehl OUT, der laut Handbuch unbedingt verwendet werden soll, um die Fehlerverfolgung abzuschalten, braucht nicht eingesetzt zu werden. OUT dient nicht dazu, ON ERROR zu beenden. Und schließlich ist die Simons'-Basic-Fehlerkontrolle nicht in der Lage, ihre eigenen Fehler zu identifizieren, ein ?PROC NOT FOUND ERROR z.B. (Nummer 33) wird als ?SYNTAX ERROR (Nummer 11) "verkauft" (siehe Beispiel).

Beispiel: 

10 ON ERROR: GOTO 10000

15 PRIN "{clr/home}"
20 PRINT "ok"

10000 NO ERROR
10010 PRINT "in zeile " ERRLN "trat fehler nr." ERRN "auf."
10020 STOP

(bei einem Programmlauffehler springt der Interpreter in die BASCIC-Zeile 10000)
Ergebnis des Beispielprogramms

Die Fehlerkontrolle insgesamt wurde in TSB so überarbeitet, dass sie nunmehr voll funktionsfähig ist, siehe ON ERROR (TSB)

Persönliche Werkzeuge