ON ERROR (TSB)
ON ERROR (TSB) | |
Syntax: | ON ERROR: <befehl> |
Parameter | |
befehl: GOTO 10000 (Beispiel) | |
Einordnung | |
Typ: | Anweisung |
Kontext: | Fehlerkontrolle |
Aufgabe: | Fehler während des Programmlaufs abfangen |
Abkürzung: | on E |
Token: | $64 $43 (100 67) |
Verwandte Befehle | |
OUT - RESUME - NO ERROR - ERRN - ERRLN |
Dieser Artikel beschreibt das TSB-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
oder auch ON ERROR: CALL fehler
.
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.
Hinweis: Bei Abbruch über END, STOP oder RUN/STOP verlässt TSB den Fehlerabfang-Modus automatisch.
Beispiel[Bearbeiten | Quelltext bearbeiten]
10 ON ERROR: GOTO 10000 15 PRIN "?CLR/HOME?": PRINT "OK" 20 FOR I=1 TO 6:READ B:PRINT B:NEXT 30 DATA 1,2,3,4,5 40 END 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!": 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)
Benutzt man RESUME, sollten die Zeilen (10000-10040) der Fehlerabfang-Routine gründlich geprüft sein, denn ein Fehler hier wäre fatal.
$$ | %% | AT | CALL | CENTER | CHECK | COLD | COLOR | COPY | CLS | CSET | D! | D!PEEK | D!POKE | DIR | DISK | DISPLAY | DIV | DO | DO NULL | DRAW TO | DUMP | DUP | ELSE | ERROR | EXEC | FETCH | FIND | GRAPHICS | INSERT | INST | JOY | KEY | KEYGET | LIN | MAP | MEMCLR | MEMCONT | MEMDEF | MEMLEN | MEMLOAD | MEMOR | MEMPEEK | MEMPOS | MEMREAD | MEMRESTORE | MEMSAVE | MERGE | MOB ON/OFF | MOBCOL | MOD | MOVE | MULTI | NRM | ON ERROR | ON KEY | OPTION | OUT | PAGE | PAINT | PAUSE | PLACE | RENUMBER | RESUME | RETRACE | SCRLD | SCRSV | SOUND | TEXT | TRACE | USE | WAVE | X!