10.2 возбуждение исключенийВ языке возбуждение исключений производится неявно для предопределённых исключений и явно пользователем с помощью оператора: RAISE [Имя_Исключенш]; Описания исключений размещаются в видимых разделах спецификаций, но не могут быть параметрами процедур. Наряду с определяемыми пользователем исключениями, язык содержит некоторые предопределённые исключения, описанные в пакетах STANDARD, IO_EXCEPTION и др. Такие исключения не требуют описания и возбуждаются автоматически, но могут также явно возбуждаться пользователем. Список предопределённых исключений из пакета STANDARD: • PROGRAMMERROR (Ошибка программы). Исключение возбуждается при попытке вызова подпрограммы активизации задачи или конкретизации настраиваемого модуля, если тело соответствующего модуля ещё не обработано; если выполнение функции завершено через оператор end при выполнении оператора отбора с ожиданием, когда все альтернативы закрыты и отсутствует раздел else. • CONSTRAINT_ERROR (Ошибка ограничения). Исключение возбуждается при нарушении ограничений диапазона; ограничения индекса или дискриминанта; при попытке использовать несуществующие компоненты записи и др. • STORAGE_ERROR (Ошибка памяти). Исключение возбуждается в одной из следующих ситуаций: при выполнении генератора, когда При выполнении оператора Raise работа программы прекращается и возбуждается исключение с указанным именем и управление предается соответствующему обработчику. Оператор исключения без имени допустим только внутри обработчика исключения. При этом он снова возбуждает исключение, которое вызвало переход на обработчик исключения с данным оператором возбуждения. П Например: Raise ALARM2; предопределённое исключение Raise STORAGE_ERROR; Raise; |
| Оглавление| |