Языки программирования. Практический сравнительный анализ


Языки программирования. Практический сравнительный анализ - стр. 271


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

Итак, никакого возврата к аварийному процессу при такой стратегии нет, а значит, нет и опасности вызвать "лавину" исключений и сообщений об авариях. Если ведущий процесс сочтет возможным, он может снова запустить (в новых условиях) и бывший аварийный процесс. Но решение об этом не встроено в семантику языка, а программируется на уровне иерархии, высшем по отношению к аварийному процессу.

Назовем описанный принцип обработки исключений принципом динамической ловушки. Название связано с тем, что возникшее исключение распространяется по динамически объемлющим процессам до тех пор, пока не попадет в ловушку, заготовленную в одном из процессов (т.е. не достигает реакции на исключение).

Именно этот принцип поведения исполнителя в исключительных ситуациях воплощен в Аде (как целиком отвечающий требованиям к языку и, в частности, способствующий надежному и структурному программированию).

Осталось лишь объяснить, как именно устроена ловушка (реакция на исключение), а также рассказать о некоторых дополнительных возможностях языка.

 

4.21.2.5. Ловушка (реакция на исключение)

Как было видно из примера с процедурами P, Q и R, в общем случае тела подпрограмм, тела пакетов, тела задач, а также блоки содержат в конце обычной последовательности операторов еще часть, определяемую ключевым словом exception. Это и есть ловушка исключений. Она устроена аналогично оператору выбора, но вместо значений перечисляемого типа после ключевого слова when фигурируют имена исключений.

Например,

  begin

    ... - - последовательность операторов

  exception -- ловушка исключенийt 

    when плохо_обусловленная | численная ошибка =>

         PUT("матрица плохо обусловлена");

    when others =>

         PUT("фатальная ошибка");

         raise ошибка;

  end ;

Альтернатива others, как обычно, выбирается в том случае, когда не выбраны остальные.


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



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