I am want to suppress all the errors that could appear in my VBS logon script.
Can I surround the WHOLE 500 lines script with :
On Error Resume Next
'[... whole script (~500 lines of code) ...]
On Error GoTo 0
asked Nov 29, 2012 at 14:00
Jonathan RiouxJonathan Rioux
1,0592 gold badges14 silver badges29 bronze badges
You can do it — even without the OEG0 line — but you shouldn’t, because the script will continue to execute lines i … last, even if an error in line i-1 invalidates all your assumptions about necessary pre-conditions of the actions in those lines. Your strategy is comparable to driving with your eyes shut to avoid being dazzled by the headlights of other cars.
If you can’t do locally resticted error handling for selected actions —
...
On Error Resume Next
risky_action
save Err
On Error GoTo 0
If ErrorOccurred Then
something sensible
If can't continue Then
WScript.Quit 4711
End If
End If
...
try to get away with
Sub Main()
... you 500 lines ...
End Sub
On Error Resume Next
Main
If Err.Number Then
WScript.Echo "aborted"
WScript.Quit 4711
End If
This approach makes sure that the lines after an error won’t be executed.
answered Nov 29, 2012 at 14:40
Ekkehard.HornerEkkehard.Horner
38.4k2 gold badges44 silver badges94 bronze badges
2
I have a customisation on an application that opens the comport to start reading data from the GPS. Now that I am using a Bluetooth GPS receiver the port doesn’t always open the first time. If it fails it give the message «Error 121 when attempting to open communications port COM(comport number):»
Now when it does this I can check to see if the command worked, and if it didn’t fire it again… (see code for the button below) However it displays an error.
This mimics what happens when you do it manually… sometimes it takes the Bluetooth stack multiple tries to connect to the GPS… It doesn’t display an error though…
Anyway, it works, but it would be great to not show the error message on the times where the comport doesn’t open…
Any and all suggestions are welcome, and appreciated.
Notes:
-The program is working without problems on everything but new units which have to use the Microsoft Bluetooth stack.
-While this error is annoying, the system is otherwise working, and when the Bluetooth connection is made after 1-3 attempts, all is well…
-Before I added «On Error Resume Next» the process would stop whenever the connection didn’t get made.
Sub subGPSOnOffButton
'turns the GPS and tracklog on (or off) from a custom button...
'if the gps is on, make sure the user wants it off...
'if the gps is off, turn it on, and tell the user when done.
Dim iRes
If Application.GPS.IsOpen = True Then
iRes = msgbox("GPS is already on!" & vbnewline & vbnewline & "Turn it off?", vbYesNo, "GPS Active:")
If iRes = 6 then
Application.GPS.Close()
Else
Exit Sub
End if
Else
subGPSOn
msgbox "GPS is now on!", vbOKOnly, "GPS Active:"
End If
End Sub
Sub subGPSOn
On Error Resume Next
Do While Application.GPS.IsOpen = False
' Turn the GPS on
Application.GPS.Open()
Loop
' Turn the tracklog on
Application.ExecuteCommand("gpstracklog")
End Sub
Перейти к содержимому раздела
Серый форум
разработка скриптов
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
VBS: Сообщение об ошибке выполнения скрипта.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
1 2014-05-10 12:35:07 (изменено: mainpoint, 2014-05-10 15:10:02)
- mainpoint
- Участник
- Неактивен
- Рейтинг : [0|0]
Тема: VBS: Сообщение об ошибке выполнения скрипта.
Простенький скрипт, который копирует на флешку определенные файлы. Но вот только на разных устройствах, флешка имеет разные буквы (F, G, H и т. д.), когда ее вставляешь. Прописал все возможные варианты копирования, но выскакивает окно Windows Script Host «файл не найден». Хотелось бы, чтобы оно не появлялось, как его скрыть?
2 Ответ от JSmаn 2014-05-10 14:43:14
- JSmаn
- Разработчик
- Неактивен
Re: VBS: Сообщение об ошибке выполнения скрипта.
3.1. Все сообщения должны обязательно иметь в названии ветки указание системы (программного продукта, языка программирования и т.п.), о которой идёт речь в ветке. Примеры названия веток форума: «AHK: Скрипт для того-то и того-то», «VBS: Вопрос по библиотеке такой-то» и т.п. Если Вы впервые на форуме, просмотрите названия существующих веток и действуйте по аналогии. Цените время других людей. Если Вы затрудняетесь выбрать язык программирования или продукт для решения своей проблемы, вы должны прямо сказать об этом в тексте (не в заголовке) поста. Если для решения проблемы Вас устраивают лишь несколько конкретных языков программирования или продуктов, чётко перечислите их в тексте поста.
3.2. Сообщения, связанные с тематикой форума лишь косвенно или не связанные вообще, должны помещаться в раздел «Script-Coding.com community», в противном случае такая тема может быть удалена без предупреждений. Обсуждение работы самого форума должно помещаться также в раздел «Script-Coding.com community». Все такие темы должны иметь в названии отличительный знак «OFF:», в противном случае такая тема может быть удалена без предупреждений, будучи расцененной как спам или результат тестирования спамерских инструментов.
3 Ответ от mainpoint 2014-05-10 15:30:32
- mainpoint
- Участник
- Неактивен
- Рейтинг : [0|0]
Re: VBS: Сообщение об ошибке выполнения скрипта.
Закрывайте тему, я нашел ответ.
В начале скрипта нужно написать:
On Error Resume Next
4 Ответ от alexii 2014-05-11 09:57:00
- alexii
- Разработчик
- Неактивен
Re: VBS: Сообщение об ошибке выполнения скрипта.
К сожалению, это не «ответ». Это «закрыть глаза на существующую проблему и получить в итоге ещё большую».
Сообщения 4
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
- Remove From My Forums
-
Question
-
Hello, I’m trying to write a vbs script that will run a batch file called «testing2.bat» from a flash drive as invisible. Both the «invisible.vbs» and «testing2.bat» are on the flash drive. This is the current script but when I run it I get an error stating
«expected end of statement. What does that mean and how can I modify this script to make it work?strScriptPath = Left(WScript.ScriptFullName,InStrRev
(WScript.ScriptFullName,»»))
strScriptPath = strScriptPath + «Testing2.bat»
Wscript.Echo strScriptPath
Set WshShell = WScript.CreateObject(«WScript.Shell»)WshShell.Run strScriptPath
This script is saved as «invisible.vbs» and its on my flash drive along with testing2.bat Thanks!! Please test before posting.
The error says: Script: F:invisible.vbs
Line: 1
Char: 53
Error: Expected ‘)’
Code: 800A03EE
Source: Microsoft VBScript compilation error
-
Edited by
Friday, July 29, 2011 11:21 PM
-
Edited by
Answers
-
Another question, is there anyway to stop the vbs file once its started. I can’t simply close it because it’s running invisibly. Is there a code that stops the vbs or maybe the batch file?
You can pause a VB Script file like so:
msgbox «Script paused»
To terminate a script altogether you could use a statement like this one:
if x > 55 then
msgbox «x is now > 55»
wscript.quit 9
end ifYou will find a full description of these basic commands in the help file script56.chm which you can download from the Microsoft site.
-
Marked as answer by
Bill_Stewart
Tuesday, August 2, 2011 6:41 PM
-
Marked as answer by
Материал из GedeminWiki
Перейти к: навигация,
поиск
VBScript имеет весьма скудные встроенные средства обработки ошибок времени выполнения, которые сводятся к двум операторам:
On Error GoTo 0 On Error Resume Next
Первый – отключает обработку ошибок (состояние по-умолчанию). Если ошибка случится, то на экран будет выдано сообщение и выполнение текущей процедуры или функции прекратится.
При включенном режиме On Error Resume Next, ошибка не приводит к прерыванию выполнения кода и программист имеет возможность самостоятельно разобраться с ней. Информация об ошибке содержится в глобальном встроенном объекте Err. Ниже приводится описание его свойств и методов:
- Description
- Текстовое описание ошибки.
- HelpContext
- Номер топика в файле справки, который будет открыт, если пользователь воспользуется клавишей F1 в окне сообщения об ошибке.
- HelpFile
- Имя файла справки.
- Number
- Целочисленный номер ошибки. 0 означает отсутствие ошибки.
- Source
- Наименование приложения, в котором произошла ошибка.
Методы:
- Clear
- Очищает все свойства объекта, сбрасывает информацию об ошибке. Обратите внимание, что объект Err автоматически очищается при выполнении следующих операторов: On Error Resume Next, Exit Sub, Exit Function.
- Raise
- Генерирует ошибку времени выполнения. Полный формат вызова: Err.Raise(number, source, description, helpfile, helpcontext).
Только первый параметр (номер ошибки) является обязательным. Если опущены, значения остальных параметров подставляются из соответствующих свойств объекта.
Обработку ошибок проиллюстрируем на примере кода, который в цикле запрашивает у пользователя строку и пытается преобразовать ее в дату. Если введенная строка не является датой, то на экран выводится сообщение. Цикл повторяется, пока пользователь не введет корректную дату.
Dim InputD, InputS On Error Resume Next Do Err.Clear InputS = InputBox("Введите дату") If IsNumeric(InputS) Then Err.Number = vbObjectError + 1 Else InputD = CDate(InputS) End If If Err.Number <> 0 Then Application.MessageBox _ "Неверный формат даты! Повторите ввод.", _ "Ошибка", vbOkOnly + vbExclamation + vbSystemModal End If Loop Until Err.Number = 0 On Error Goto 0
См. также
- Использование TCreator