Как ловушка ошибок ADSI
VBScript предлагает только один способ ловушки ошибок: встроенная обработка ошибок. Встроенный обработчик ошибок начинается с инструкции On Error Resume Next . Так как on Error Resume Next не будет препятствовать остановке выполнения скрипта до конца область, из которого вызывается возобновление ошибок, необходимо проверка значение Err в каждой точке после инструкции On Error Resume Next, в которой может возникнуть ошибка. В следующем примере показана встроенная обработка ошибок в скрипте 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
После каждого расположения, в котором скрипт, скорее всего, возникает ошибка, существует инструкция If Err . Объект Err содержит код ошибки последней ошибки, возниквшей во время выполнения скрипта; если ошибка не произошла, Err всегда будет равен нулю (0). В предыдущем примере ошибка приведет к переходу к подпрограмме AdsiErr, которая проверка значение Err.Number для ожидаемых ошибок. Вместо того чтобы умирать с сообщением о криптографической ошибке, скрипт даст несколько лучшее объяснение того, почему он перестал работать.
Помните, что в область, в которой вызывается сообщение "О возобновлении ошибки", любая ошибка, возникающая после следующего вызова "Возобновление ошибки". Это может сделать скрипт более сложным для отладки, если вы забыли проверка значение Err в соответствующих расположениях. Где бы вы ни ожидали, что ошибка, скорее всего, обязательно проверка значение Err.
(При первоначальной отладке скрипта может потребоваться просто позволить скрипту остановить его выполнение и отобразить номер строки об ошибке, а затем добавить обработчики ошибок после правильного базового потока программы.)