17.5 Классы исключений

На верх  Назад  Вперёд

Модуль SysUtils содержит много классов обработки исключений. Он также определяет базовый класс обработки исключений:

Exception = class(TObject)

private

fmessage : string;

fhelpcontext : longint;

public

constructor create(const msg : string);

constructor createres(indent : longint);

property helpcontext : longint read fhelpcontext write fhelpcontext;

property message : string read fmessage write fmessage;

end;

ExceptClass = Class of Exception;

И использует это объявление что-бы определить целый ряд обработчиков исключений, например:

{ математические исключения }

EIntError = class(Exception);

EDivByZero = class(EIntError);

ERangeError = class(EIntError);

EIntOverflow = class(EIntError);

EMathError = class(Exception);

SysUtils модуль также устанавливает обработчик исключений. Если исключение не обрабатывается в другом блоке обработки исключений, то этот обработчик вызывается библиотекой времени выполнения. В основном, он выводит адрес исключения и сообщение объекта Exception, после чего выходит с кодом 217. Если объект исключения не является потомком класса Exception, то выводится имя класса вместо сообщения исключения.

Рекомендуется использовать класс Exception или его потомки, для создания других классов исключений для оператора raise, так как может быть использован конструктор сообщений объекта исключения.