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.)