зафиксировать какую-либо ошибку в VBScript?

У меня есть пакетный файл, который называет VBScript (.vbs) программой. После вызова его, моих проверок сценария пакетной обработки %errorlevel% видеть, перестала ли .vbs программа работать. Я могу предупредить об отказе с кодом выхода в .vbs программе с WScript.Quit(1).

Однако я могу только сделать это явно. Если некоторая непредвиденная ошибка выполнения происходит, выходы .vbs с ошибочным диалоговым окном, однако код выхода является нулем, таким образом, мой пакетный файл думает, что это успешно выполнилось! Как я могу изменить то поведение?

И если Вы думаете о высказывании, использовать on error goto, не беспокойтесь..., что синтаксис доступен в регулярном VB, но не в VBScript.

6
задан Clijsters 28 January 2017 в 00:48
поделиться

3 ответа

Мне пришло в голову нестандартное решение... Кто сказал, что 0 должен означать успех? VBScript иногда возвращает код возврата 0 при неудачах, так почему бы не принять это? Примите 0 в качестве (по крайней мере, одного возможного) кода неудачи и придумайте другое число (например, 10) в качестве "кода успеха".

В конце сценария поместите WScript.Quit(10). Это будет сделано только в том случае, если до этого момента все прошло успешно. Затем вместо "if errorlevel 1" в вызывающем пакетном файле используйте "if %errorlevel% == 10"

5
ответ дан 8 December 2019 в 17:19
поделиться

Как вы говорите, все, что доступно, это On Error Resume Next, поэтому вы вынуждены использовать паттерн:

On Error Resume Next
 ThingWithAChanceOfThrowingAnError ...
If (Err.number <> 0) then PrintErrorAndQuitWith1(Err.Description)
2
ответ дан 8 December 2019 в 17:19
поделиться

Вы можете использовать технику, описанную в эта статья . Это требует, чтобы вы обернули ваш скрипт внутри класса VBScript.

1
ответ дан 8 December 2019 в 17:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: