Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
110
Добавлен:
02.05.2014
Размер:
102.91 Кб
Скачать

3. Распространение.

МAIN

Р1

Р2

Р3

После каждого перехода на более высокий уровень ИС захватывает все больше и больше пространства программы.

4. Обработка и перехват.

Синтаксически это выглядит так. Любой блок может завершаться блоком обработки исключений.

Procedure P3 is

(объявление переменных)

begin

if (…) then raise FILE_ERROR;

endif;

exception (это непосредственно перед end P3)

when имя1 => ……;

when имя2 => ……; обработчики (здесь могт стоять любые операторы языка Ада)

……………………..

when others => ……; (ловушка последней надежды)

end P3;

Ловушки перебираются сверху вниз. Если какое-то имя совпало, значит мы перехватили ИС. Если будет где-то when FILE_ERROR, то управление перейдет на этот блок при ИС FILE_ERROR.

procedure P2 is

(объявление переменных)

begin

P3 ( );

PUT (1);

Exception

…………

end P2;

Если в Р3 мы не нашли обработчика, то ошибочным считается Р2. Если и там нет обработчика, то распространиение идет дальше. ИС считается обработанной после того как ма нашли обработчик и он отработал. Если мы не знаем, как исправить ошибку, но у нас были захвачены какие-то ресурсы, то мы должны их именно сдесь освободить и перевозбудить ИС (это делается специальным оператором raise без параметров, он может встречаться только внутри блока обработки ошибок, он говорит, что ошибка, какая бы она не была перевозбуждается и идет выше).

Procedure P3 is

X: Integer := F(I);

P := new T;

begin

if (…) then raise FILE_ERROR;

endif;

exception;

when …………….;

…………………

when others => unchecked deallocation;

end P3;

when others появляется либо, как последняя надежда, либо для частичного исправления ошибки.

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

К любой программе на языке Ада априори подключен блок обработки ИС.

15

Соседние файлы в папке Лекции по программированию на ЯВУ