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


Обработка исключений - часть 4


11.4.2. ИСКЛЮЧЕНИЯ, ВОЗБУЖДАЕМЫЕ ПРИ ПРЕДВЫПОЛНЕНИИ ОПИСАНИЙ

Если исключение возбуждено при предвыполнении раздела описаний данного окружения, то это предвыполнение прекращается. Дальнейшее действие зависит от природы окружения.

а) Для тела подпрограммы — то же исключение повторно возбуждается в точке вызова подпрограммы, кроме случая, когда эта подпрограмма является главной программой, — тогда ее выполнение прекращается.

б) Для оператора блока — то же исключение повторно возбуждается непосредственно после оператора блока.

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

г) Для тела задачи — задача становится законченной, а в точке активизации задачи возбуждается исключение TASKING_ERROR; как пояснено в разд. 9.3.

Если исключение возбуждается во время предвыполнения либо описания пакета, либо описания задачи, то это предвыполнение прекращается; дальнейшее действие зависит от природы описания.

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

Говорят, что повторно возбуждаемое исключение (как рассмотрено выше в пп. а) — г))

распространено

либо выполнением подпрограммы или оператора блока, либо предвыполнени-ем описания пакета, описания задачи или тела пакета.

Пример исключения в разделе описания оператора блока (случай б}):

procedure P is

... begin

declare

N: INTEGER := F; -- ФУНКЦИЯ F может возбуждать исключение ERROR begin




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



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