Самоучитель по Delphi 7 для профессионалов


Исключительная ситуация как класс - часть 3


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

Потомки Exception начинаются с Е, например EZeroDivide.

Для экономии места потомки нескольких важных объектов не показаны. Ниже приведены табл. 3.1—3.3, содержащие описания этих групп исключительных ситуаций.

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

Рис. 3.1. Дерево объектов исключительных ситуаций Delphi 7

Таблица 3.1. Исключительные ситуации при работе с памятью (порождены от EHeapException)

Тип

Условие возникновения

EOutOfMemory

Недостаточно места в куче (памяти)

EOutOfResources

Нехватка системных ресурсов

EInvalidPointer

Недопустимый указатель (обычно nil)

Таблица 3.2. Исключительные ситуации целочисленной математики (порождены от EIntError)

Тип

Условие возникновения

EDivByZero

Попытка деления на ноль (целое число)

ERangeError

Число или выражение выходит за допустимый диапазон

EIntOverflow

Целочисленное переполнение

Таблица 3.3. Исключительные ситуации математики с плавающей точкой (порождены от EMa thError)

Тип

Условие возникновения

EInvalidOp

Неверная операция

EZeroDivide

Попытка деления на ноль

EOverflow

Переполнение с плавающей точкой

EUnderflow

Исчезновение порядка

EInvalidArgument

Неверный аргумент математических функций

Для этого используется оператор raise, за которым в качестве параметра должен идти экземпляр объекта типа Exception. Обычно сразу за оператором следует конструктор класса ИС:

raise EMathError.Create(' ') ;

но можно и разделить создание и возбуждение исключительной ситуации:

var E: EMathError; 

begin

E := EMathError.Create С');

raise E; 

end;

Оператор raise передает созданную исключительную ситуацию ближайшему блоку try. .except (см. ниже).




- Начало -  - Назад -  - Вперед -