Введение в программирование - Учебное пособие (Корочкин А. В.)

10.2 возбуждение исключений

В языке возбуждение исключений производится неявно для предопре­делённых исключений и явно пользователем с помощью оператора:

RAISE

[Имя_Исключенш];

Описания исключений размещаются в видимых разделах специфика­ций, но не могут быть параметрами процедур.

Наряду с определяемыми пользователем исключениями, язык содер­жит некоторые предопределённые исключения, описанные в пакетах STANDARD, IO_EXCEPTION и др. Такие исключения не требуют опи­сания и возбуждаются автоматически, но могут также явно возбуж­даться пользователем.

Список предопределённых исключений из пакета STANDARD:

•   PROGRAMMERROR (Ошибка программы). Исключение возбужда­ется при попытке вызова подпрограммы активизации задачи или конкретизации настраиваемого модуля, если тело соответствующего модуля ещё не обработано; если выполнение функции завершено че­рез оператор end при выполнении оператора отбора с ожиданием, когда все альтернативы закрыты и отсутствует раздел else.

•   CONSTRAINT_ERROR (Ошибка ограничения). Исключение возбу­ждается при нарушении ограничений диапазона; ограничения ин­декса или дискриминанта; при попытке использовать несуществую­щие компоненты записи и др.

•   STORAGE_ERROR (Ошибка памяти). Исключение возбуждается в одной из следующих ситуаций: при выполнении генератора, когда

При выполнении оператора Raise работа программы прекращается и возбуждается исключение с указанным именем и управление предает­ся соответствующему обработчику. Оператор исключения без имени допустим только внутри обработчика исключения. При этом он снова возбуждает исключение, которое вызвало переход на обработчик ис­ключения с данным оператором возбуждения.

П Например:

Raise    ALARM2;

предопределённое исключение

Raise    STORAGE_ERROR;

Raise;