В процедуре обработки ошибок для идентификации ошибок используются оператор If и Select и, следовательно, соответствующие условные выражения. В этих условных выражениях обычно проверяется значение свойства Number (Номер) объекта Err (Ошибка). Объект Err содержит информацию об ошибке, возникшей во время выполнения приложения, а свойство Number возвращает числовое значение, указывающее на тип ошибки. После определения типа ошибки и, возможно, выполнения каких-либо действий процедура обработки ошибок должна заканчиваться одним из следующих операторов.
Resume - возвращает управление оператору, при выполнении которого во: никла ошибка.
Resume Next - возвращает управление оператору, следующему за оператором, при выполнении которого возникла ошибка.
Resume метка - осуществляет переход к указанной метке.
End - завершает выполнение процедуры или приложения.
Пример обработчика ошибок
После небольшого экскурса в теорию обработки ошибок приступим к практическим занятиям. Вставьте новый модуль в рабочую книгу. Ниже приведены инструкции для создания процедуры, содержащей обработчик ошибок.
Создайте новую процедуру под именем ПримерОбработчик.
Начните выполнение процедуры. Введите число 10 в первое окно ввода.
Введите 0 во второе окно ввода. После нажатия клавиши <Enter> отобразится окно с сообщением о делении на ноль.
Щелкните на кнопке ОК для закрытия окна сообщения.
С помощью функции Error можно выводить текст, соответствующий возникшей ошибке. Измените процедуру ПримерОбработчик, как показано ниже (новый оператор выделен полужирным шрифтом).
Начните выполнение процедуры. Введите число 5 в первое окно ввода и число 0 - во второе. Появится окно сообщения, показанное на рис. 13.1.
У вас может возникнуть мысль, что писать свой обработчик ошибок для каждой процедуры или функции не очень рационально. И вы будете совершенно правы. В следующем разделе я покажу, как создать централизованный обработчик ошибок.
Рис. 13.1. Текст сообщения, предложенный функцией Error