Как уже говорилось, при вызове
Как уже говорилось, при вызове исключительной ситуации (raise) автоматически создается экземпляр соответствующего класса, который и содержит информацию об ошибке. Весь вопрос в том, как в обработчике данной ситуации получить доступ к этому объекту.
Рассмотрим модифицированную процедуру A в нашем примере:
procedure NewA;
begin
writeln('Enter A');
try
writeln('Enter A''s try block');
B;
writeln('After B call');
except
on E: ESampleError do writeln(E.Message);
on ESomethingElse do
writeln('Inside A''s ESomethingElse handler');
end;
writeln('Exit A');
end;
Здесь все изменения внесены в строку
on ESE: ESampleError do writeln(ESE.Message);
Пример демонстрирует еще одно новшество в языке Object Pascal - создание локальной переменной. В нашем примере локальной переменной является ESE - это тот самый экземпляр класса ESampleError, который был создан в процедуре C в момент вызова исключительного состояния. Переменная ESE доступна только внутри блока do. Свойство Message объекта ESE
содержит сообщение, которое было передано в конструктор Create
в процедуре C.
Есть еще один способ доступа к экземпляру exception - использовать функцию ExceptionObject:
on ESampleError do
writeln(ESampleError(ExceptionObject).Message);
Предопределенные обработчики исключительных ситуаций
Ниже Вы найдете справочную информацию по предопределенным исключениям, необходимую для профессионального программирования в Delphi.
-
Exception - базовый класс-предок всех обработчиков исключительных ситуаций.
-
EAbort - “скрытое” исключение. Используйте его тогда, когда хотите прервать тот или иной процесс с условием, что пользователь программы не должен видеть сообщения об ошибке. Для повышения удобства использования в модуле SysUtils
предусмотрена процедура Abort, определенная, как:
procedure Abort;
begin
raise EAbort.CreateRes(SOperationAborted) at ReturnAddr;
end;
-
EComponentError - вызывается в двух ситуациях:
1) при попытке регистрации компоненты за пределами процедуры Register;
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий