Из диалогового окна Microsoft Visual Basic видно, что каждая ошибка имеет свой код. В табл. 12.1 приведены коды наиболее часто встречаемых ошибок.
Таблица 12.1. Коды наиболее часто встречаемых ошибок
| Код | Сообщение | ||||
| 5 | Приложение не запущено | ||||
| 6 | Переполнение | ||||
| 7 | Не хватает памяти | ||||
| 9 | Индекс выходит за пределы допустимого диапазона | ||||
| 11 | Деление на нуль | ||||
| 13 | Несоответствие типа | ||||
| 18 | Произошло прерывание, вызванное пользователем | ||||
| 52 | Неправильное имя файла или идентификатор | ||||
| 53 | Файл не найден | ||||
| 54 | Неверный режим работы с файлом | ||||
| 55 | Файл уже открыт | ||||
| 56 | Ошибка ввода-вывода | ||||
| 61 | Переполнение диска | ||||
| 68 | Устройство недоступно | ||||
| 71 | Диск не готов | ||||
| 72 | Повреждена поверхность диска | ||||
| 335 | Невозможен доступ к системным ресурсам | ||||
| 368 | Истек срок действия данного файла. Программе требуется файл более новой версии | ||||
| 482 | Ошибка принтера | ||||
В идеале разрабатываемое приложение не должно никогда аварийно прерываться. В приложении следует создать средства перехвата любой возможной ошибки, обработать ее, выдать сообщение пользователю и обеспечить безаварийное продолжение работы приложения. Обычно конструкция перехвата ошибок имеет следующую структуру.
| Инструкция On Error | Производит перехват ошибки. Устанавливает, что про грамма должна делать в случае появления ошибки. | ||||
| Подпрограмма обработки ошибки | В этой подпрограмме определяется тип возникшей ошибки и устанавливается, что программа должна де-лать в зависимости от типа ошибки. Допустимы следующие синтаксисы.
Синтаксис 1: On Error GoTo строка Активизирует подпрограмму обработки ошибок, начало которой определяется обязательным аргументом строка, значением которого может быть либо метка строки, либо номер строки. Синтаксис 2: On Error Resume Next Указывает, что при возникновении ошибки происходит передача управления на инструкцию, непосредственно следующую за инструкцией, где возникла ошибка. Синтаксис 3: On Error GoTo 0 Отключает любой активизированный обработчик ошибок в текущей процедуре. | ||||
| Инструкция Resume | Обеспечивает процедуре возможность продолжить работу после обработки ошибки. Допустимы следующие синтаксисы.
Синтаксис 1: Resume После обработки ошибки управление передается той инструкции, в которой произошла ошибка. Синтаксис 2: Resume строка После обработки ошибки управление передается инструкции, определенной аргументом строка. Значением этого аргумента может быть любая метка строки или номер строки. Синтаксис 3: Resume Next После обработки ошибки управление передается инструкции, следующей за инструкцией, в которой произошла ошибка. | ||||
| Инструкция Exit | Останавливает выполнение процедуры.
Допустимые синтаксисы: Exit Sub Exit Function
| |
| ||
Number |
Возвращает код ошибки |
||
Source |
Имя текущего проекта VBA |
||
Description |
Возвращает строковое выражение, содержащее текст сообщения об ошибке |
||
HelpFile |
Полное имя (включая диск и путь) файла справки VBA |
||
HelpContext |
Контекстный идентификатор файла справки VBA, соответствующий ошибке с кодом, указанным в свойстве Number |
||
LastDLLError |
Содержит системный код ошибки для последнего вызова библиотеки динамической компоновки (DLL) |
||
Clear |
Очищает все значения свойств объекта Err. Метод clear используется для явной очистки значений свойств объекта Err после завершения обработки ошибки. Это необходимо, например, при отложенной обработке ошибки, которая задается инструкцией on Error Resume Next |
||
Raise |
Создает ошибку выполнения. Используется при моделировании ситуаций ошибки. Синтаксис: Raise number, source, description, helpfile, helpcontext Аргументы: helpcontext — контекстный идентификатор, определяющий соответствующий обрабатываемой ошибке раздел в файле, указанном в аргументе helpfile |
||
