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


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


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

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

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

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

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

Принятая в языке стратегия ("правила поведения") обработки исключений прямо связана со взглядом на сущность исключений. Этот взгляд, в свою очередь, зависит от важнейших требований, определивших авторскую позицию при создании языка. Хотя в конечном итоге различия поведения могут показаться не такими уж значительными, рассмотреть их обоснование и поучительно, и интересно. Выберем для определенности два языка, ПЛ/1 и Аду. Скажем заранее, что различия касаются лишь продолжения работы после обработки исключения.




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