ON ERROR

BASIC2006

Mit dem ON ERROR Schlüsselwort können Sie innerhalb einer Funktion eine Fehlerbehandlungsroutine implementieren. Die erkennbaren Laufzeitfehler entnehmen sie aus der Liste der Fehlercodes.

Die Verwendung von On Error ist ausschließlich in Funktionen möglich. Der Aufruf von On Error auf anderen Controllern wie der M Unit 2.0 oder MICRO wird zwar prinzipiell nicht untersagt, sollte jedoch vermieden werden. Achten Sie ferner darauf, dass bei einem Fehler, der mit On Error abgefangen wird dem ersten WORD (MICRO: ersten BYTE) im Speicher die Fehlernummer zugewiesen wird. Diese Speicherstelle wird allerdings auch für die systemeigenen Rückgabewerte verwendet. Eventuell sollte man deswegen bei kritischen Programmteilen Rückgaben manuell mit dem Stack Objekt steuern.

On Error ist nur sinnvoll in der Kombination mit den Argumenten "Goto ...". Man kann zwar auch "On Error Resume Next" verwenden, jedoch findet hier dann keinerlei Fehlerbehandlung statt (die Syntax wurde auf Grund der Kompatibilität zu anderen Basic Dialekten implementiert). Deswegen wird auch auf "Resume Next" hier nicht weiter eingegangen.

Die Fehlernummern können mit dem ERR Objekt abgefragt werden (Eigenschaft: Err.Number). Beachten Sie, dass Err.Number während der Laufzeit auch Werte annehmen kann, die keine Fehlernummern darstellen. Sie sollten also Err.Number nur innerhalb einer Fehlerbehandlung aufrufen.

Weiterer Hinweis: Als Sprungmarken werden für On Error Goto... globale Labels verwendet. Es können auch lokale Sprungmarken referenziert werden. Achten Sie jedoch darauf, dass sich das Label innerhalb der gleichen Funktion (siehe Beispiel) befindet.

Performance Hinweis: Die C-Control verfügt selber über keine fest implementierte Fehlerbehandlung. Aus diesem Grund musste durch einen "Work-Around" mit BASIC++ ein vergleichbares Verfahren emuliert werden. Darunter leidet jedoch die Größe und die Geschwindigkeit des Programms. Aus diesem Grund sollten Sie "On Error" nur dann verwenden, wenn die negativen Eigenschaften des "On Error" Error Schlüsselworts zu vernachlässigen sind.

Syntax:

 On Error Goto [Sprungadresse]  

Sprungadresse: Erforderlich, Gültiger Bezeichner einer (globalen) Sprungadresse zum

Beispiel:

 Function DivisionDurchNull() 
    On Error Goto ErrHandle 

    Define i As Byte 
    i = 1 / 0 ' Hier liegt ein Fehler vor, 
    ' da die Division durch Null nicht definiert ist! 

    Exit Function     ' Denken Sie daran, die 
                      ' Fehlerbehandlung nicht 
                      ' "aus Versehen" auszuführen. 

 ErrHandle: ' lokale Sprungmarke
    If Err.Number = ErrDivByZero Then 
       Print "Fehler! Division durch Null!" 
    End If 
 End Function

Siehe auch: GOTO, ERR, Fehlerbehandlung, Fehlercodes

© 2004 - 2012 tappertzhofen. Alle Reche vorbehalten.
Seitenanfang | Impressum