Visual Basic 6. Руководство разработчика

Обработка ошибок


Элемент управления Script имеет событие Error, вызываемое в случаях возник­новения ошибки. Ошибку может вызвать элемент управления (вызов метода с не­правильным аргументом или попытка установить несуществующее свойство) или сам сценарий Она может генерироваться в основном приложении, но не раньше, чем пользователю предложат воспользоваться Script Debugger. Пока разрабатываются и тестируются сценарии, можно позволить Visual Basic запустить отладчик и помочь в отладке. Завершенное приложение не должно выдавать подобных сообщений.

Может показаться, что нынешняя версия элемента управления не позволяет подавлять диалоговое окно, что делает затруднительным распространение прило­жений. Пользователи могут не иметь инсталированного Script Debugger, и эти сообщения приведут к путанице. Нынешний элемент управления Script далек от совершенства, но, возможно, следующая версия будет более гибкой или будет иметь редактор кода программы.

Необходимо мириться с ограничениями и недостатками элемента управления Script. Для обработки ошибок используйте объект Error, который является свойством элемента управления Script и отличается от объекта Err в Visual Basic. Объект Error имеет два свойства, которые указывают место ошибки в сценарии:

• Line - номер строки с ошибкой;

• Column — положение первого символа оператора, вызвавшего ошибочную ситуацию.

Эти свойства используются для установки указателя на место ошибки. Когда в качестве редактора используется элемент управления TextBox, переход на заданный символ в заданной строке текста этого элемента не является тривиальной задачей. Не существует методов или свойств, позволяющих выполнить это непосредственно.

Объект Error элемента управления Script имеет дополнительные свойства, которые перечислены в табл. 20.5.

Таблица 20.5. Дополнительные свойства объекта Error элемента управления Script

Свойство

Описание



Number Description

Text

Source

Номер ошибки

Описание ошибки

Строка с ошибочным оператором

Имя процедуры или класса, в которых произошла ошибка

<
После обработки ошибки для ее сброса вызывается метод

Clear объекта Error. Рассмотрим обработчик ошибок в коде кнопки Execute Script. Если элемент управ­ления Script генерирует ошибку выполнения и свойство ScriptControll.Error.Number не равно нулю, то можно использовать свойство Error элемента управления Script для получения информации об ошибочном операторе. Но в большинстве случаев элемент управления Script генерирует ошибку автоматизации и не инициализирует объект Error. Обработчик ошибок просто отображает ошибку в окне сообщений.

CodeError:

If ScriptControll.Error.Number <> 0 Then

msg = ScriptControll.Error.Description & bvCrLf

msg =

msg & "В строке " & ScriptControll.Error.Line _

& ", столбце" & ScriptControll.Error.Column

MsgBox msg, ,"Ошибка в сценарии"

Else

MsgBox "ERROR # " & Err.Number & vbCrLf & Err.Description

End If

Наиболее частый источник ошибок - вызов неправильных методов или объектных переменных. Следующий оператор активизирует Excel и вызывает метод Evaluate.

Set EXL = CreateObject ("Excel.Application")

MsgBox "Логарифм числа 99 равен" & EXL.Evaluate ("Log(99)")

Если пропущено имя переменной EXL или приложение Excel отсутствует на машине, то в обоих случаях будет выдано одно сообщение об ошибке автоматизации. Это означает, что сценарий не имеет доступа к объекту. Если вызвать функцию InStr() с ошибочным аргументом (или неправильным числом аргументов), то в обоих случаях появится одно сообщение об ошибке. Объект Error элемента управления Script может локализовать только простые синтаксические ошибки. При работе с объектами элемент управления Script не оказывает существенной помощи.


Содержание раздела