Обработка исключений

Исключения связаны с возникновением ошибок в процессе выполнения приложений. Исключение – это нарушение условий выполнения программы, вызывающее прерывание или полное прекращение ее работы. Обработка исключения состоит в нейтрализации вызвавшей его динамической ошибки.

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

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

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

Конструкция try..finally состоит из двух блоков и имеет следующую форму:

try

// Инструкции, выполнение которых может вызвать ошибку

finally

// Инструкции, которые должны быть выполнены даже в случае ошибки

end;

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

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

Конструкция try.. except имеет следующую форму:

try

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

except

// инструкции, которые должны быть выполнены в случае ошибки

end;

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

Пример:

procedure Tform1.Button1Click (Sender: TObject);

begin

try

if OpenDialog1.Execute then begin

Table1.Active:= False;

Table1.TableName:= OpenDialog1.FileName;

Table1.Active:= True;

end;

except

MessageDlg (‘Ошибка открытия таблицы’, OpenDialog1.FileName, ‘!’,mtError, [mbOK], 0);

end;

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



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: