Freigeben über


Abfangen von ADSI-Fehlern

VBScript bietet nur eine Möglichkeit zum Abfangen von Fehlern: Inlinefehlerbehandlung. Ein Inlinefehlerhandler beginnt mit der On Error Resume Next-Anweisung . Da On Error Resume Next verhindert, dass alle Fehler die Ausführung des Skripts bis zum Ende des Bereichs beenden, aus dem On Error Resume Next aufgerufen wird, müssen Sie den Wert von Err an jedem Punkt nach der On Error Resume Next-Anweisung überprüfen, wenn Sie erwarten, dass ein Fehler auftreten könnte. Im folgenden Beispiel wird die Inlinefehlerbehandlung in einem ADSI-Skript veranschaulicht:

On Error Resume Next

Set myComputer = GetObject(computerPath)
If Err Then AdsiErr()

' Create the new user account
Set newUser = myComputer.Create("user", username)
newUser.SetInfo
If Err Then AdsiErr()

Sub AdsiErr()
    Dim s
    Dim e
    
    If Err.Number = &H8000500E Then
        WScript.Echo "The user " & username & " already exists."
    Elseif Err.Number = &H80005000 Then
        WScript.Echo "Computer " & computerPath & " not found.  Check the ADsPath and try again."
    Else
        e = Hex(Err.Number)
        WScript.Echo "Unexpected Error " & e & "(" & Err.Number & ")"
    End If
    WScript.Quit(1)

End Sub

Nach jedem Speicherort, an dem für das Skript wahrscheinlich ein Fehler auftritt, gibt es eine If Err-Anweisung . Das Err-Objekt enthält den Fehlercode des letzten Fehlers, der während der Ausführung des Skripts aufgetreten ist. Wenn kein Fehler aufgetreten ist, ist Err immer null (0). Im vorherigen Beispiel führt ein Fehler dazu, dass die Ausführung zur AdsiErr-Unterroutine springt, die den Wert von Err.Number auf erwartete Fehler überprüft. Anstatt mit einer kryptischen Fehlermeldung zu sterben, gibt das Skript eine etwas bessere Erklärung dafür, warum es nicht mehr ausgeführt wird.

Beachten Sie, dass innerhalb des Bereichs, in dem On Error Resume Next aufgerufen wird, jeder Fehler, der nach dem On Error Resume Next-Aufruf auftritt, ignoriert wird. Dies kann das Debuggen eines Skripts erschweren, wenn Sie vergessen, den Wert von Err an geeigneten Speicherorten zu überprüfen. Wenn Sie einen Fehler erwarten, überprüfen Sie unbedingt den Wert von Err.

(Beim anfänglichen Debuggen des Skripts sollten Sie es einfach zulassen, dass das Skript seine Ausführung anhält und die ansenkende Zeilennummer für einen Fehler anzeigt. Fügen Sie dann die Fehlerhandler hinzu, nachdem der grundlegende Programmflow korrekt ist.)