Теперь, инструкция raise, помещенная в обработчик исключения, вызывает распространение исключения Constraint_Error на один уровень выше, то есть, к вызвавшей подпрограмме.
Таким образом, исключение может быть получено и соответствующим образом обработано в каждой подпрограмме иерархии вызовов.
Инструкцию raise очень удобно использовать в секции others
обработчика исключений:
. . . exception . . . when others => raise; -- регенерация текущего исключения; -- дает возможность другим подпрограммам -- произвести обработку возникшего -- исключения end; |
В этом случае, соответствующее исключение будет продолжать генерироваться и распространяться до тех пор, пока не будет обработано надлежащим образом.