Генерация
исключений
Иногда программисту необходимо,
чтобы программа в нужный момент времени генерировала исключительную ситуацию
нового типа, которого нет в стандартных типах исключений Kylix. В этом случае
следует создать новый тип исключения.
Для создания собственных
типов исключений нужно знать, как определить тип объекта исключения и как вызвать
исключение.
Так как исключение является
объектом Kylix, то определение нового типа исключения так же просто, как определение
объекта нового типа. Теоретически возможно вызвать любой объект как объект исключения,
но стандартные обработчики исключений работают только с теми объектами, кото-
рые являются потомками
Exception
или, другими словами, с объектами, предками которых являются
Exception
.
В качестве примера создания
собственного типа исключения рассмотрим следующее определение:
type
EMyException = class(Exception);
Теперь,
если вы вызовете исключение EMyException
, но не напишите собственный
обработчик для него, произойдет вызов стандартного обработчика для Exception.
Так как стандартный обработчик для Exception
показывает имя вызванного
исключений, вы можете увидеть имя вашего нового исключения,
Чтобы вызвать созданное
исключение, используйте команду raise
.
Для примера рассмотрим
типичную задачу проверки введенного пользователем пароля:
type
EPasswordInvalid = class(Exception);
После определения нового
типа исключения EPasswordInwalid
вы можете вызвать это исключение
в любом месте программы:
if Password <> CorrectPassword then
raise EPasswordInvalid.Create('Введен неправильный пароль');
Вызов созданного исключения
производится по его имени. При этом вызывается метод конструктора Create. Уничтожать
самостоятельно вызванное исключение не нужно, т. к. об этом позаботится среда
Kylix.