ON ERROR (TSB)

Aus C64-Wiki
Wechseln zu: Navigation, Suche
ON ERROR (TSB)
Format: ON ERROR: <befehl>
Parameter
befehl: GOTO 10000 (Beispiel)
Einordnung
Typ: Anweisung
Kontext: Fehlerkontrolle
Aufgabe: Fehler während des Programmlaufs abfangen
Abkürzung: on E
Verwandte Befehle
OUT - RESUME - NO ERROR - ERRN - ERRLN


Dieser Artikel beschreibt das Schlüsselwort ON ERROR (TSB).
Das entsprechende Simons'-Basic-Schlüsselwort lautet ebenfalls 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 kann man dem User mitteilen, welcher Fehler vorlag (ERRN und OUT) und in welcher BASIC-Zeile er aufgetreten ist (ERRLN), damit die Ursache des Fehlers umrissen wird. Man sollte dem Benutzer Zeit zum Lesen geben und ihn dann entscheiden lassen, ob das Programm fortgesetzt (siehe RESUME) oder abgebrochen werden soll, um den Fehler zu beheben.

Bei Abbruch verlässt TSB den Fehlerabfang-Modus automatisch.

Beispiel: 

10 ON ERROR: GOTO 10000

15 PRIN "{clr/home}": PRINT "ok"
20 READ b
25 PRINT b: GOTO 20
30 DATA 1,2,3,4,5

10000 PRINT: PRINT "Fehler Nr." ERRN "(";: OUT: PRINT ")"
10010 PRINT "Betroffene Zeile:" ERRLN: PRINT
10020 PRINT "Beenden (b)? Fortsetzen (f)? ";: FETCH "fb",1,x$: PRINT
10030 IF x$ = "b" THEN PRINT: PRINT "Abbruch nach Fehler!": NO ERROR: STOP
10040 RESUME

(bei einem Programmlauffehler springt der Interpreter in die BASCIC-Zeile 10000, 
gibt dort Informationen zum Fehler aus und stellt Handlungsalternativen zur Auswahl)
Ergebnis des Programmbeispiels