Поделиться через


Как ловушка ошибок 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.

(При первоначальной отладке скрипта может потребоваться просто позволить скрипту остановить его выполнение и отобразить номер строки об ошибке, а затем добавить обработчики ошибок после правильного базового потока программы.)