d
Aktiviert oder deaktiviert die Fehlerbehandlung.
Syntax
On Error Resume Next
On Error GoTo 0
Anmerkungen
Wenn Sie an keiner Stelle in Ihrem Code eine "On Error Resume Next"-Anweisung verwenden, kann jeder auftretender Laufzeitfehler dazu führen, dass eine Fehlermeldung angezeigt und die Codeausführung gestoppt wird. Der Host, auf dem der Code ausgeführt wird, bestimmt jedoch das genaue Verhalten. Der Host kann solche Fehler manchmal anders behandeln. In einigen Fällen kann der Skriptdebugger an der Stelle des Fehlers aufgerufen werden. In anderen Fällen gibt es eventuell keinen offensichtlichen Hinweis darauf, dass ein Fehler aufgetreten ist, da der Host den Benutzer nicht benachrichtigt. Auch das hängt allein davon ab, wie der Host auftretende Fehler behandelt.
Innerhalb einer Prozedur ist ein Fehler nicht unbedingt schwerwiegend, wenn die Fehlerbehandlung irgendwo entlang des Aufrufstacks aktiviert ist. Wenn die lokale Fehlerbehandlung in einer Prozedur nicht aktiviert ist und ein Fehler auftritt, wird die Kontrolle durch den Aufrufstack zurückgeleitet, bis eine Prozedur mit aktivierter Fehlerbehandlung gefunden wird. Der Fehler wird dann an dieser Stelle behandelt. Wenn die Fehlerbehandlung für keine Prozedur im Aufrufstack aktiviert ist, wird zu diesem Zeitpunkt eine Fehlermeldung angezeigt, und die Ausführung wird gestoppt, oder der Host verarbeitet den Fehler entsprechend.
Bei "On Error Resume Next" wird die Ausführung mit der Anweisung fortgesetzt, die unmittelbar auf die Anweisung folgt, die den Laufzeitfehler verursacht hat, oder mit der Anweisung, die unmittelbar auf den letzten Aufruf der Prozedur folgt, die die "On Error Resume Next"-Anweisung enthält. Dadurch kann die Ausführung trotz eines Laufzeitfehlers fortgesetzt werden. Anschließend können Sie die Fehlerbehandlungsroutine inline innerhalb der Prozedur erstellen.
Eine "On Error Resume Next"-Anweisung wird inaktiv, wenn eine andere Prozedur aufgerufen wird. Daher müssen Sie eine "On Error Resume Next"-Anweisung in jeder aufgerufenen Routine ausführen, wenn Sie die Inlinefehlerbehandlung innerhalb dieser Routine wünschen. Wenn eine Prozedur beendet wird, wird die Fehlerbehandlungsfunktion auf die Fehlerbehebung zurückgesetzt, die vor Beginn der beendeten Prozedur eingerichtet war.
Verwenden Sie On Error GoTo 0, um die Fehlerbehandlung zu deaktivieren, wenn Sie sie zuvor mit "On Error Resume Next" aktiviert haben.
Das folgende Beispiel veranschaulicht die Verwendung der "On Error Resume Next"-Anweisung.
On Error Resume Next ' Ignore errors and continue execution
' Attempt to divide by zero (this will cause an error)
Dim result
result = 10 / 0
err1 = Err.Number
' Check if an error occurred
If err1 <> 0 Then
Err.Clear ' Clear the error
End If
' Script continues after error handling.
Erläuterung:
Das Zeilenergebnis = 10 / 0 führt zu einem Fehler wegen Division durch null.
Da On Error Resume Next aktiv ist, wird das Skript nicht gestoppt, und der Fehler wird mit Err.Number gesucht.
Anschließend wird der Fehler nach seiner Behandlung mit Err.Clear gelöscht.
Wichtige Hinweise:
Err.Number: Diese Eigenschaft speichert den Fehlercode, wenn ein Fehler auftritt. Wenn kein Fehler auftritt, lautet sie "0".
Err.Description: Enthält eine Beschreibung des letzten aufgetretenen Fehlers.
Err.Clear: Löscht die Fehlerinformationen nach der Fehlerbehandlung, sodass sich nachfolgende Fehler nicht auf das Skript auswirken.
Beispiel 1:
On Error Resume Next ' Ignore errors and continue execution ' Attempt to divide by zero (this will cause an error) Dim result result = 10 / 0 err1 = Err.Number On Error GoTo 0 ' Default error handling is restored ' Now, any error that occurs will stop the script result = 10 / 0 'Error will be thrown