32 Урока Borland Delphi



buy cheap viagra online

Урок 09 - часть 8


Как уже говорилось, при вызове исключительной ситуации (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;




    Содержание  Назад  Вперед