Spec-Zone.ru › Ada 2012
Справочник по Ada 2012

6.5.1 Невозвращающие процедуры

Указание аспектa No_Return со значением True означает, что процедура не может вернуть управление нормально; она может распространить исключение или зациклиться.
Абзацы 2 и 3 перемещены в Приложение J, «Устаревшие возможности».

Статическая семантика

Для процедуры или обобщенной процедуры может быть задан следующий аспект представления языка:
No_Return
Тип аспекта No_Return — Boolean. Когда аспект No_Return имеет значение True для сущности, сущность называется невозвращающейся.
Если он задан непосредственно, определение_аспекта должно быть статическим выражением. Этот аспект никогда не наследуется; если он не задан непосредственно, аспект имеет значение False.
Если обобщенная процедура невозвращающаяся, то и ее экземпляры также невозвращающиеся. Если процедура, объявленная внутри обобщенного блока, невозвращающаяся, то соответствующие копии этой процедуры в экземплярах также будут невозвращающимися.

Правила легальности

Аспект No_Return не должен быть задан для пустой процедуры или экземпляра обобщенного блока.
Оператор возврата не должен применяться к невозвращающейся процедуре или обобщенной процедуре.
Процедура должна быть невозвращающейся, если она переопределяет диспетчеризованную невозвращающуюся процедуру. В дополнение к местам, где обычно применяются правила легальности (см. 12.3), это правило также применяется в закрытой части экземпляра обобщенного блока.
Если переименование-как-тело завершает объявление невозвращающейся процедуры, то переименованная процедура должна быть невозвращающейся.
Абзац 8 был удален.

Динамическая семантика

Если тело невозвращающейся процедуры завершается нормально, то в точке вызова генерируется исключение Program_Error.

Примеры

procedure Fail(Msg : String) -- вызывает исключение Fatal_Error
with No_Return;
-- Уведомляет компилятор и читателя, что процедура никогда не возвращается нормально


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API