Compartir a través de


Cómo interceptar errores adsi

VBScript solo ofrece una manera de interceptar errores: control de errores insertados. Un controlador de errores insertado comienza con la instrucción On Error Resume Next . Dado que al reanudar el error Siguiente evitará que los errores detengan la ejecución del script hasta el final del ámbito desde el que se llama a On Error Resume Next , debe comprobar el valor de Err en cada momento después de la instrucción On Error Resume Next donde se espera que se produzca un error. En el ejemplo siguiente se muestra el control de errores insertados en un script ADSI:

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

Después de cada ubicación donde es probable que el script encuentre un error, hay una instrucción If Err . El objeto Err contiene el código de error del último error que se produjo durante la ejecución del script; si no se ha producido ningún error, Err siempre será cero (0). En el ejemplo anterior, un error provocará que la ejecución salte a la subrutina AdsiErr , que comprueba el valor de Err.Number en busca de errores esperados. En lugar de morir con un mensaje de error críptico, el script proporcionará una explicación algo mejor para por qué dejó de ejecutarse.

Recuerde que dentro del ámbito en el que se llama a On Error Resume Next , se omitirá cualquier error que se produzca después de la llamada Al reanudar el error Siguiente . Esto puede hacer que un script sea más difícil de depurar si olvida comprobar el valor de Err en las ubicaciones adecuadas. Siempre que espere que sea probable un error, asegúrese de comprobar el valor de Err.

(Al depurar inicialmente el script, es posible que desee simplemente dejar que el script detenga su ejecución y muestre el número de línea infractor en un error y, a continuación, agregue los controladores de errores después de que el flujo de programa básico sea correcto).