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


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


Об исключениях в Аде коротко и ясно написанно  в учебнике Вегнера.

 

4.21.2.1. Исключения

Рассмотрим концепцию исключения, ориентируясь на Аду, стараясь больше уделять внимания "авторской позиции", т.е. объяснять, почему при проектировании языка были приняты излагаемые решения.

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

Предопределенные исключения касаются, естественно, самых общих ситуаций. Например, при нарушении ограничений, связанных с типом (ограничений допустимого диапазона значений, диапазона индексов и т.п.) возникает исключение нарушение_ограничения (constraint_error); при ошибках в числовых расчетах (переполнение, деление на нуль, исчезновение и т.п.) - исключение численная_ошибка (numeric_error); при неправильной компоновке программы (отсутствие тела нужного программного сегмента и т.п.) - исключение нет_сегмента (program_error); при нехватке памяти для размещения динамических объектов - исключение нет_памяти; при нарушении во взаимодействии асинхронных процессов (аварийное или нормальное завершение процесса, содержащего вызываемый вход и т.п.) - исключение ошибка_взаимодействия (tasking_error).

Если, скажем, объявить

         A:array (1 .. 10) of INTEGER ;

то при I = 11 или I = 0 в момент вычисления выражения A(I) возникает предопределенная исключительная ситуация нарушение_ограничения.

Определяемые исключения явно вводятся программистом посредством объявления исключения. Например, объявление

объект_пуст, ошибка_в_данных : exception ;

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

                raise ошибка_в_данных;

служит возникновение исключительной ситуации ошибка_в_данных.

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


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