Исключение Constraint_Error
Исключение Constraint_Error
Исключение Constraint_Error возбуждается в следующих случаях:
- при попытке нарушения ограничения диапазона, ограничения индекса или ограничения дискриминанта
- при попытке использования компонента записи, не существующего при текущем значении дискриминанта
- при попытке использования именуемого или индексируемого компонента, отрезка или атрибута объекта, обозначенных ссылочным значением, если этот объект не существует, поскольку ссылочное значение равно null
Рассмотрим пример:
procedure Constraint_Demo is X : Integer range 0;
Y : Integer;begin
Put("enter a number ");
Get(Y);
X := Y;
Put("thank you");
end Constraint_Demo; |
Если пользователь вводит значение выходящее за диапазон значаний 0, то нарушается ограничение диапазона значений для X, и происходит исключение Constraint_Error.Поскольку в этом примере не предусмотрен код, который будет обрабатывать это исключение, то выполнение программы будет завершено, и окружение времени выполнения Ады (Ада-система) проинформирует пользователя о возникшей ошибке.При этом, строка
Put("thank you"); |
выполнена не будет.Таким образом, при возникновении исключения, остаток, выполняющегося в текущий момент блока, будет отброшен.
Рассмотрим пример в котором выполняется нарушение ограничения диапазона индексных значений для массива:
procedure Constraint_Demo2 is X : array () of Integer := (1, 2, 3, 4, 5); Y : Integer := 6;begin X(Y) := 37; end Constraint_Demo2; |
Здесь, исключение Constraint_Error будет генерироваться когда мы будем пытаться обратиться к несуществующему индексу массива.