Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв ИП 2010-04-04 doc.doc
Скачиваний:
108
Добавлен:
13.05.2015
Размер:
5.96 Mб
Скачать

13.1.2. Обработка ошибок, возникающих при выполнении программы

Программа является нематериальным изделием и не может изна­ши­вать­ся, ломаться или давать сбои в процессе эксплуатации Однако она выполняется на материальных устройствах, может содержать ошибки или обрабатывать ошибочные данные. Все это может привести к возник­но­ве­нию ошибок при ее выполнении, и, если не предусмотреть в программе их обработку, то она обычно заканчивает свою работу аварийно с возмож­ными катастрофическими последствиями для пользователя. Если понимать под надежностью программы ее способность сохранять работоспособность при возникновении сбоев, поломок или ошибок, то такие программы яв­ляют­ся не надежными. В надежных программах суммарный объем кода об­ра­ботчиков ошибок может достигать более 90% всей программы.

Обработка ошибок производится в такой последовательности:

  • установка среды обработки (“ловушек” или перехвата) ошибок;

  • проверка, обработка и устранение ошибки;

  • продолжение выполнения программы.

Стандартная обработка ошибки(при отсутствии обработчиков оши­­бок) заключается в выводе сообщения об ошибке и в выборе поль­зо­вателем нужного варианта продолжения работы прог­раммы (рис. 13.1.2.1).

КнопкойContinueможно игнорировать ошибку и продолжить выполнение. Для прекращения выполнения используется кноп­каEnd. Переход в режим отладки осу­­ществляется кнопкойDebug (п.13.1.1). Если ошибка возникает при выполненииEXE‑файла, то после выво­да сообщения приложение немедленно закрывается.

Рис. 13.1.2.1. Сообщение об ошибке

Установка среды обработки ошибокреализуется командой

On Error {Goto <метка> | Resume Next | GoTo 0}

<метка>‑ при возникновении ошибки отключается стандартный ме­ха­низм обработки ошибок и передается управление на блок команд об­­ра­бот­ки ошиб­ки, начинающийся с указанной метки (на внутреннею под­прог­рам­му обработки ошибок ‑ обработчик ошибокErrorhandlers). Последней ко­ман­дой блока обыч­но являются команды Resum (п. 2.12.4),ExitSub,ExitFunction,ExitProcedure,End,Stop;

Resume Next‑ игнорирование строки, вызвавшей ошибку;

GoTo 0‑ включается стандартный механизм обработки ошибок.

Эта команда указывается в начале программы и является “ловушкой” для ошибок, которые могут возникнуть при дальнейшем выполнении прог­рам­мы (RuntimeErrors).

Внимание!Будет ошибка, если передача управления на обработ­чик ошибок будет выполнена не операторомOnError, аGoToили переходом от пре­ды­ду­щего оператора. Для защиты от последнего варианта следует распола­гать перед меткой обработчика операторExitSub,ExitFunctionилиExitProcedure.

Имеется спе­циальный объект Errcинформацией об ошибке со сле­дующими основными свойствами и методами:

Description‑ текст сообщения об ошибке (Err.DescriptionилиError). Можно задать собственные сообщения (Err.Description=”Нет файлаP.Txt”);

Number ‑ код ошибки (Err.Number или Err);

Source‑ имя объекта (проекта), в котором возникла ошибка. Для каждого модуля или компонента можно задать текст, который уточняет источник возникновения ошибки;

Clear‑ очистка значений всех свойств объектаErr;

Raise N‑ генерация ошибки с кодомN(аналогичен командеError(п.2.12.2)). Метод поз­воляет произвести отладку процедуры обработки ошиб­­ки с указанным кодом.

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