Partilhar via


Como interceptar erros ADSI

O VBScript oferece apenas uma maneira de interceptar erros: tratamento de erros embutidos. Um manipulador de erros embutido começa com a instrução On Error Resume Next . Como On Error Resume Next impedirá que quaisquer erros interrompam a execução do script até o final do escopo do qual On Error Resume Next é chamado, você deve verificar o valor de Err em cada ponto após a instrução On Error Resume Next onde você espera que um erro possa ocorrer. O exemplo a seguir demonstra o tratamento de erros embutidos em um 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

Após cada local onde o script provavelmente encontrará um erro, há uma instrução If Err . O objeto Err contém o código de erro do último erro que ocorreu durante a execução do script, se nenhum erro tiver ocorrido, Err sempre será zero (0). No exemplo anterior, um erro fará com que a execução salte para a sub-rotina AdsiErr, que verifica o valor de Err.Number para erros esperados. Em vez de morrer com uma mensagem de erro enigmática, o script dará uma explicação um pouco melhor para por que ele parou de ser executado.

Lembre-se de que, dentro do escopo no qual On Error Resume Next é chamado, qualquer erro que ocorra após a chamada On Error Resume Next será ignorado. Isso pode realmente tornar um script mais difícil de depurar se você esquecer de verificar o valor de Err em locais apropriados. Onde quer que você espere que um erro seja provável, certifique-se de verificar o valor de Err.

(Quando você estiver inicialmente depurando o script, convém simplesmente permitir que o script interrompa sua execução e exibir o número da linha ofensiva em um erro e, em seguida, adicione os manipuladores de erros depois que o fluxo básico do programa estiver correto.)