Как обрабатывать ошибки в VB Script - PullRequest
1 голос
/ 16 октября 2008

У меня есть скрипт VB. Мне нужно записать информацию об ошибке в файл. Мне нужно регистрировать каждую информацию, такую ​​как описание ошибки с номером ошибки и в какой подпрограмме произошла ошибка.

Пожалуйста, укажите код

Ответы [ 4 ]

3 голосов
/ 16 октября 2008

Вы можете использовать объект FileSystemObject и Ошибка , если вы используете VBScript.

Вставьте следующее в error.vbs и запустите его. Он выдаст ошибку, а затем запишет подробности в файл с именем c: \ errors.log

Option Explicit

On Error Resume Next ' Potential error coming up
Dim MyArray(5)
MyArray(7) = "BWA HA HA"
If Err.Number <> 0 Then
    LogError(Err)
    Err.Clear
End If
On Error Goto 0 ' Stop looking for errors 

Sub LogError(Details)
    Dim fs : Set fs = CreateObject("Scripting.FileSystemObject")
    Dim logFile : Set logFile = fs.OpenTextFile("c:\errors.log", 8, True)
    logFile.WriteLine(Now() & ": Error: " & Details.Number & " Details: " & Details.Description)
End Sub

Если вы используете страницу ASP, вы можете использовать ASPError для получения более подробной информации об ошибке, такой как номер строки и т. Д. (Не забудьте заменить CreateObject на Server.CreateObject).

Edit: Чтобы получить номер строки, вызвавшей ошибку в скрипте .vbs, вы можете добавить это в качестве параметра в подпрограмму.

2 голосов
/ 20 ноября 2008

VBScript не поддерживает метку перехода ошибки. Следующий фрагмент кода никогда не будет работать -:

On Error GoTo HandleError '' при ошибке будет переход кода на указанный сигнал

Dim aa = 15/0

GoTo Finish '' пропускает ошибку

handlingHandleError:

Dim msgSet

msg = Err.Description & vbCrLf & Err.Number

MsgBox msgFinish: '' Конец sciprt

1 голос
/ 05 декабря 2010

Поместите всю свою подпрограмму или функцию в цикл do (или другой цикл). Поместите вашу обработку ошибок снаружи цикла do

private sub BucketList()
do while 1=1
  ClimbMountain(top)
    if err.Number <> 0 then exit do
  SwimOcean(deep)
    if err.Number <> 0 then exit do
  GiveErrorHandlingToVBS(isNeverGoingToHappen)
    if err.Number <> 0 then exit do

  exit do
loop

'Error Handler
if err.Number <> 0 then
  'handle error
end if

end sub
0 голосов
/ 16 октября 2008

Для обработки ошибок в VBScript используется условие «On Error». Есть 3 способа обработки ошибок:

  • On Error Resume Next '' игнорировать ошибки
  • On Error GoTo 0 '' удаляет обработку ошибок
  • On Error GoTo HandleError '' при ошибке будет переход кода на указанный сигнал

Примеры:

On Error Resume Next '' ignore errors
SomeIgnorableFunction()

On Error GoTo 0 '' removes error ignoring
SomeImportantFunction()

On Error GoTo HandleError '' on error will code jump to specified signal
Dim a
a = 15 / 0

GoTo Finish '' skips error handling

HandleError:
Dim msg
Set msg = Err.Description & vbCrLf & Err.Number
MsgBox msg

Finish:
'' there is end of sciprt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...