Локальная обработка


Локальная обработка обеспечивает мягкий выход из исключительной ситуации. В состав языка введены две конструкции с похожим синтаксисом:

· try … finally;

· try … except.

Блоки try включают в себя инструкции, при выполнении которых может возникнуть исключение, например, преобразование данных или запись на диск. Конструкции try могут содержать несколько инструкций и быть вложенными друг в друга. Если в любой из инструкций блока try возникает исключение, то управление передается первой из инструкций блока finally.

try // инструкции, при выполнении которых может возникнуть ошибкаfinally //инструкции, которые должны быть выполнены даже в случае ошибкиend;

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

Так как инструкция try … finally не ликвидирует исключительную ситуацию, то глобальный обработчик выдаст сообщение о характере ошибки.

Конструкция try … except применяется для перехвата исключения и предоставляет возможность его обработки, глобальный обработчик не вызывается, а обработку должен обеспечить программист.

try //инструкции, при выполнении которых может возникнуть ошибкаexcept //инструкции, которые должны быть выполнены в случае ошибкиend;

Если в инструкциях блока try возникает исключение, то управление передается первой из инструкций блока except. Если исключение не возникло, то инструкции блока except не выполняются. При появлении исключения инструкции блока except могут ликвидировать исключительную ситуацию и восстановить работоспособность программы.

Пример

procedure TForm1.btnOpenClick (Sender: TObject);begintryif OpenDialog1.Execute then begin Table1.Active := False; Table1.TableName := OpenDialog1.FileName; Table1.Active := True;end;exceptMessageDlg('Ошибка открытия таблицы', OpenDialog1.FileName, '!', mtError, [mbOK], 0);end;end;

При нажатии кнопки btnOpen появляется окно выбора файла таблицы БД для открытия. После выбора файла таблицы набор данных Table1 связывается с этой таблицей и выполняется открытие набора данных. Инструкции, управляющие выбором и открытием файла, включены в блок try, так как. возможна ошибка. При ее возникновении выполняется блок except. В примере обработка заключается только в выдаче предупреждения.

Блок except можно разбить на несколько частей с помощью конструкций on … do, позволяющих анализировать класс исключения для его более удобной и полной обработки.

on {Идентификатор: класс исключения} do{Инструкции обработки исключения этого класса};else {Инструкции};

Если класс возникшего исключения совпадает с указанным после on, то выполняются инструкции после слова do.

Идентификатор произвольно задается пользователем и является необязательным, т.е. может отсутствовать, при этом не ставится и (:). Идентификатор – это локальная переменная, представляющая собой экземпляр класса исключения, который можно использовать для доступа к объекту возникшего исключения. Эта переменная доступна только внутри on … do.

Если в блоке except расположено несколько инструкций on ... do, то else, располагающийся в конце блока, относится ко всей совокупности конструкций. Инструкции после do и else могут быть составными.

Если какие-либо действия должны быть выполнены независимо от того, произошла ошибка или нет, то удобно использовать инструкцию try...finally. Однако эта конструкция не обрабатывает исключения, а лишь смягчает их последствия. Для локальной обработки внутрь конструкции try...finally можно включить try … except.

Используемые для доступа к данным компоненты TTable и TQuery имеют специальные события для обработки исключений. Например, для компонента TTable такими событиями являются:

· OnEditError – ошибка редактирования или вставки записи;

· OnPostError – ошибка закрепления изменений в записи;

· OnDeleteError – ошибка удаления записи.

Тема 3.8.Формирование и вывод отчетов

 



Дата добавления: 2021-09-25; просмотров: 301;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.008 сек.