Ада-95. Компилятор GNAT


Исключение Constraint_Error


Исключение Constraint_Error возбуждается в следующих случаях:

  • при попытке нарушения ограничения диапазона, ограничения индекса или ограничения дискриминанта
  • при попытке использования компонента записи, не существующего при текущем значении дискриминанта
  • при попытке использования именуемого или индексируемого компонента, отрезка или атрибута объекта, обозначенных ссылочным значением, если этот объект не существует, поскольку ссылочное значение равно null

Рассмотрим пример:

procedure Constraint_Demo is

X : Integer range 1..20; Y : Integer;

begin

Put("enter a number "); Get(Y); X := Y; Put("thank you"); end Constraint_Demo;

Если пользователь вводит значение выходящее за диапазон значаний 1..20, то нарушается ограничение диапазона значений для X, и происходит исключение Constraint_Error.

Поскольку в этом примере не предусмотрен код, который будет обрабатывать это исключение, то выполнение программы будет завершено, и окружение времени выполнения Ады (Ада-система) проинформирует пользователя о возникшей ошибке.

При этом, строка

Put("thank you");

выполнена не будет.

Таким образом, при возникновении исключения, остаток, выполняющегося в текущий момент блока, будет отброшен.

Рассмотрим пример в котором выполняется нарушение ограничения диапазона индексных значений для массива:

procedure Constraint_Demo2 is

X : array (1..5) of Integer := (1, 2, 3, 4, 5); Y : Integer := 6;

begin

X(Y) := 37; end Constraint_Demo2;

Здесь, исключение Constraint_Error будет генерироваться когда мы будем пытаться обратиться к несуществующему индексу массива.




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



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