Программный обработчик ошибок

Программный обработчик ошибок


Begin

Передача объектов, связанных с исключительными ситуациями

Finally

Try

Выполнение оканчивающих действий

On EIntError do

Except

Begin

ShowMessage('Ошибка # 22');

raise;

end;

end ;

После выдачи сообщения Ошибка # 22 исполнится стандартный обработчик ошибки EZeroDivide.

Из текста обработчика ошибки можно генерировать другие исключительные ситу­ации, к примеру:

try

X := Y + Z;

raiseEIntOverflow.Create('Может быть переполнение');

end;

Если при сложении целых чисел, хранящихся в переменных Y и Z, возникнет ка­кая-то арифметическая ошибка (базисный класс EIntError), то в обработчике этой ошибки будет сгенерирована другая исключительная ситуация EIntOverflow, а обра­ботка ошибки EIntError закончится.

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



try

операторы finally

заключительные деяния

end;

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

В последующем тексте освобождение памяти, выделенной для динамического массива DynArr (финишный оператор присваивания значения nil),произойдет независимо от того, удачно ли сотворен и обработан массив DynArr либо памяти для него нехватило:

varDynArr: array ofinteger;

SetLength(DynArr,100000) ;

DynArr := nil

end;

Когда в программке появляется исключительная ситуация, особый обработ­чик делает соответственный ей объект. Чтоб получить доступ к этому объекту, в описании класса в части exceptнадо за ранее указать случайный идентификатор:

on E: EIntError do Р;

В случае появления ошибки EIntError объект соответственного класса будет

сохранен в переменной Е (обрисовывать ее не нужно), к которой можно обращаться, к примеру, для занесения новых значений в ее характеристики.

У хоть какого класса исключительной ситуации есть два характеристики: Message, в каком хранится строчка, выводимая в окне сообщения, и HelpContext, число-идентификатор раздела справочной системы для вывода более подробной инфы об ошибке.

on E: EIntError do

Е.Message := 'Ошибка вычислений';

raise;

end;

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

По дефлоту при появлении исключительной ситуации для ее обработки вызывается процедура HandleException. Она инспектирует, обрабатывает ли приложение событие On Exception. Если обработка отсутствует, выводится диалоговое окно, с коротким сообщением об ошибке. Такое окно можно вызывать при помощи стандартной процедуры ShowException, которая получает в качестве параметра объект, имеющий тип исключительной ситуации:

on E: EIntError do

ShowException(E);

Обработчик действия On Exception задается очевидно, при помощи оператора присваивания, к примеру в способе сотворения либо активации формы:

procedureTMyForm.FormActivate(Sender: TObject);




Возможно Вам будут интересны работы похожие на: Программный обработчик ошибок:


Похожый реферат

Похожый реферат

Похожый реферат

Похожый реферат

Похожый реферат

Похожый реферат

Похожый реферат

Похожый реферат

Похожый реферат

Похожый реферат

Похожый реферат

Похожый реферат

Похожый реферат

Похожый реферат

Похожый реферат

Похожый реферат

Cпециально для Вас подготовлен образовательный документ: Программный обработчик ошибок