Справочник по Ada 2005
11.3 Операторы raise
Оператор raise_statement вызывает исключение.
Синтаксис
Правила легальности
Используемое имя_исключения (если присутствует) в операторе raise_statement должно соответствовать типу исключения. Оператор raise_statement без имя_исключения (т.е., оператор повторного возбуждения) должен находиться внутри обработчика, но не внутри блока, заключённого этим обработчиком.
Правила разрешения имён
Выражение expression, если оно присутствует в операторе raise_statement, должно иметь тип String.
Динамическая семантика
Вызов исключения — это вызов новой реализации этого исключения, как описано в 11.4. При выполнении оператора raise_statement с указанием имя_исключения, вызывается исключение с заданным именем. Если присутствует строковое_выражение, оно вычисляется, и его значение связывается с экземпляром исключения. При выполнении оператора повторного возбуждения, повторно возбуждается экземпляр исключения, который вызвал передачу управления в ближайший внешний обработчик.
Примеры
Примеры операторов raise:
raise Ada.IO_Exceptions.Name_Error; -- см. A.13
raise Queue_Error with "Буфер заполнен"; -- см. 9.11
raise Queue_Error with "Буфер заполнен"; -- см. 9.11
raise; -- повторное возбуждение текущего исключения