Описание класса Exception и его потомков содержится в модуле SysUtils. Exception является непосредственным потомком TObject и предназначен для передачи информации в блоки обработки ошибок. Класс включает несколько конструкторов. Наиболее простые из них Create(const Msg: string) и CreateFmt (const Msg: string; const Args: array of const). Первый связывает с объектом строку–сообщение, а второй позволяет приготовить строку–сообщение зависящую от параметров, подобно тому как это делает утилита Format.
Объекты класса Exception имеют свойство Message: string, которое и задается конструктором. Этот класс является базовым для целого семейства стандартных исключений: EInOutError, EIntError, EInvalidCast, EInvalidPointer, EMathError, EOutOfMemory и др. Все они несут дополнительную информацию о специфических исключениях, а объекты этих классов создаются программой автоматически при возникновении соответствующей ошибки.
Программист может путем наследования построить свой класс исключений и создавать объекты этого класса при возникновении нештатной ситуации. Обратите внимание на то, что в именах таких классов отсутствует префикс T, все они начинаются с E.
Если возникает одна из стандартных исключительных ситуаций, то система автоматически (без участия программиста) генерирует объект–исключение и “поднимает флаг” исключительной ситуации. В остальных случаях за создание исключения отвечает программист. Для этого существует оператор raise. Вот пример создания исключительной ситуации:
В этой строке создается исключение, с ним связывается объект типа EMyException, у которого свойство Message равно: ’Ужасная ситуация!’. Обратите внимание, что программист не связывает созданный объект с какой–либо ссылкой, тем не менее он будет доступен в коде обработки.
Опубликовал Kest
September 01 2011 11:55:46 ·
0 Комментариев ·
8637 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.