![](/user_photo/2706_HbeT2.jpg)
7.Обработка ошибок
Ожидаемые ошибки времени выполнения 1
Подготовка перехвата 1
Проверка и устранение ошибки 1
Продолжение выполнения программы 2
Обработка ошибок выполнения 2
Обработка ошибок при вложенных вызовах процедур 3
Глобальная обработка ошибок 4
Неожиданные ошибки выполнения 4
В идеальном случае программа не должна бороться с ошибками в период выполнения. Однако разработчик должен предусмотреть вероятность появления сбойных файлов, переполнения памяти или ввода пользователем некорректных данных. Все это может послужить причиной возникновения ошибок при выполнении программы (Runtime Errors).
П
ри
обнаружении такой ошибки Visual
Basic выводит соответствующее
сообщение и приостанавливает выполнение
программы. Если приложение было запущено
из среды разработки, то существует
возможность переключиться в режим
отладки с помощью кнопки Break
либо в режим проектирования с помощью
кнопки End.
Среда разработки относительно "мягко" реагирует на ошибки периода выполнения. Если же такая ошибка возникает после запуска выполняемого exe-файла, то приложение немедленно закрывается. Хотя сообщение об ошибке и появляется, перейти в режим отладки невозможно. Это драматическая реакция, возможно, на совершенно безобидную ошибку.
Перехват ошибок периода выполнения следует предусмотреть на этап разработки приложения. Для этого создаются специальные процедуры – обработчики ошибок (error handlers). Все ошибки периода выполнения можно разделить на две группы: ожидаемые, обработка которых предусмотрена разработчиком, и неожиданные, появление которых не всегда могут предвидеть даже опытные программисты.
Ожидаемые ошибки времени выполнения
Обработка ошибок производится в три этапа:
подготовка перехвата;
проверка и устранение ошибки;
продолжение выполнения программы.
Подготовка перехвата
Первым шагом является расстановка "ловушек". В Visual Basic для этого предназначен оператор On Error, синтаксис которого имеет вид:
On Error GoTo label | Resume Next | GoTo 0
Выполнение оператора On Error активизирует режим обработки ошибок. Это означает, что при возникновении ошибки периода выполнения после ввода в программу этой строки выполняется предусмотренная в программ процедура обработки ошибки. Выполнение программы не прерывается и стандартно сообщение об ошибке не выводится.
Метка (label), указанная в операторе, должна находиться в той же процедуре, что и оператор On Error. Если в качестве метки указан ноль (0), то предусмотренная разработчиком процедура обработки ошибок отключается и включается стандартный механизм обработки ошибок. Опция Resume Next подробно описывается в следующем разделе.
Проверка и устранение ошибки
Оператор On Error не выполняет непосредственно никакой обработки ошибок, а лишь передает управление ответственному за обработку ошибок фрагменту программы. Для обеспечения перехвата всех ошибок в процедуре оператор On Error, по возможности, должен находиться в самом ее начале.
Обработка ошибки должна выполняться сразу после ее обнаружения. Сначала следует установить тип ошибки. Для этого в Visual Basic существует объект Err, свойство которого Number содержит код последней возникшей ошибки. Для совместимости с предыдущими версиями Visual Basic свойство Number объекта Err является свойством по умолчанию.
Список кодов ошибок, которые можно перехватывать и обрабатывать, вы найдете в системе справок Visual Basic. После определения типа ошибки по коду (свойство Number объекта Err) следует попытаться устранить ошибку или обработать ее так, чтобы она не мешала выполнению программы.