Ада-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 будет генерироваться когда мы будем пытаться обратиться к несуществующему индексу массива.



    Содержание раздела