Errorhandling - Resume

Programmablauf wiederaufnehmen

Sobald der interne Error-Handler aktiviert wurde, muss das Programm zum „normalen Ablauf“ zurückkehren. Hierfür stellt VB/A die Anweisung Resume (Wiederaufnehmen) zur Verfügung. Man unterscheidet drei Varianten:

Resume

Die Anweisung Resume entspricht einer „Retry“-Anweisung, also die Wiederholung der Codezeile, die den Fehler verursacht hat. Das macht nur dann Sinn, wenn in der Fehlerbehandlung die Voraussetzungen erfüllt wurden, um das Programm ab der entsprechenden Codezeile – jetzt ohne Fehler – fortführen zu können; z.B.:

Sub DivideByZero()
    Dim i As Integer
    Dim intDenom As Integer
    On Error GoTo ErrHandler
    intDenom = 0
    i = 8 / intDenom
    Exit Sub
ErrHandler:
    intDenom = InputBox("Bitte gültigen Divisor eingeben (>0)")
    Resume 'Retry
End Sub
Resume Next

Die Resume Next-Anweisung ist ähnlich der Resume-Anweisung, wobei hier nun in der Codezeile das Programm fortgeführt wird, die der Fehler verursachenden Codezeile folgt; z.B.:

Sub DivideByZero()
    Dim i As Integer
    Dim intDenom As Integer
    On Error GoTo ErrHandler
    intDenom = 0
    i = 8 / intDenom
    Exit Sub
ErrHandler:
    MsgBox "Division wurde abgebrochen!"
    Resume Next
End Sub
' oder
Sub DivideByZero()
    Dim i As Integer
    Dim intDenom As Integer
    On Error Resume Next
    intDenom = 0
    i = 8 / intDenom
    If Err.Number <> 0 Then
        MsgBox "Division wurde abgebrochen!"
    End If
End Sub
Resume Line

Die dritte Version der Resume Anweisung verweist mit Line auf ein gültiges Programm-Label oder eine gültige Zeilennummer; z.B.:

Sub DivideByZero()
    Dim i As Integer
    Dim intDenom As Integer
    On Error GoTo ErrHandler
    intDenom = 0
    i = 8 / intDenom
    Exit Sub
AltCalc:
    i = ERR_VALUE
    Exit Sub
ErrHandler:
    MsgBox "Division wurde abgebrochen!"
    Resume AltCalc
End Sub

Bei der Nutzung der Resume Line Anweisung sollte man sehr vorsichtig sein. Wenn die Resume-Anweisung aufgerufen wird, ohne das ein Error-Handler aktiv ist, führt dies wiederum zu dem Fehler 20 („Resume ohne Fehler!“).