Справочное руководство по языку Ада-83


Описания исключений


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

описание-исключения ::= список-идентификаторов: exception;

Описание исключения с несколькими идентификаторами эквивалентно последовательности единичных описаний с одним идентификатором (см. 3.2). Каждое единичное описание исключения задает имя отличного от других исключения. В частности, если настраиваемый модуль содержит описание исключения, то такие описания, неявно сгенерированные различными конкретизациями настройки, ссылаются на разные исключения (но все они имеют один и тот же идентификатор). Конкретное исключение, обозначенное именем, определяется во время компиляции и является одним и тем же независимо от числа предвыполнений его описания. Следовательно, если описание исключения находится в рекурсивной подпрограмме, то имя исключения обозначает одно и то же исключение для всех вызовов рекурсивной подпрограммы.

В языке предопределены следующие исключения. Они возбуждаются при обнаружении описанных ниже ситуаций.

CONSTRAINT_ERROR

Это исключение возбуждается в любой из следующих ситуаций: при попытке нарушить ограничение диапазона, ограничение индекса или ограничение дискриминанта; при попытке использовать компоненту записи, не существующую для текущих значений дискриминанта; при попытке использовать именуемую компоненту, индексируемую компоненту, отрезок или атрибут объекта, обозначенного ссылочным значением, если этот объект не существует, поскольку ссылочное значение

пустое

NUMERIC_ERROR

Это исключение возбуждается при выполнении предопределенной числовой операции, которая не может выработать верный результат (для вещественных типов в пределах предписанной точности). Сюда относится также случай использования реализацией предопределенных числовых операций для выполнения, вычисления или предвыполнения некоторой конструкции. Данные в разд. 4.5.7 правила определяют случаи, для которых от реализации не требуется возбуждения исключения в случае возникновения ошибочной ситуации (см. также 11.6).

PROGRAM_ERROR

Это исключение возбуждается при попытке вызвать подпрограмму, активизировать задачу или предвыполнить конкретизацию настройки, если тело соответствующего модуля еще не предвыполнено. Оно также возбуждается, если выполнение функции завершается через end (см. 6.5), при выполнении оператора отбора с ожиданием, когда отсутствует раздел else, a все альтернативы закрыты (см. 9.7.1). Наконец, в зависимости от реализации исключение может возбуждаться при попытке выполнить ошибочное действие и при некорректной зависимости от порядка (см. 1.6).

STORAGE_ERROR

Это исключение возбуждается в одной из следующих ситуаций: при вычислении генератора; когда не хватает динамической памяти, выделенной для задачи; когда исчерпана память для набора генерируемых объектов; при предвыполнений элемента описания или при вызове подпрограммы, если памяти

недостаточно.

TASKING_ERROR

Это исключение возбуждается при возбуждении исключений во время взаимодействия задач (см. 9 и 11.5).

<




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



Книжный магазин