Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
41
Добавлен:
17.04.2018
Размер:
75.26 Кб
Скачать

Исключения, определяемые программистом

Одной из удобных возможностей PL/SQL является то, что он позволяет программисту определять свои собственные исключения. При активизации и обработке они должны именоваться и объявляться аналогично любым другим элементам PL/SQL.

Ниже приведен полный пример объявления и определения исключения.

set serveroutput on

DECLARE

quantity1 NUMBER := -2;

quantity2 NUMBER := 3;

total NUMBER := 0;

quantity_must_positive EXCEPTION;

FUNCTION find_cost (quant NUMBER) RETURN NUMBER IS

BEGIN

IF (quant > 0)

THEN

RETURN (quant * 20);

ELSE

RAISE quantity_must_positive; /*Актизизация исключения*/

END IF;

END find_cost;

BEGIN

total := find_cost(quantity2);

total := total + find_cost(quantity1);

EXCEPTION

WHEN quantity_must_positive

THEN

dbms_output.put_line('Total until now: ' || total);

dbms_output.put_line('Tried to use negative quantity ');

END;

/

Исключение объявляется в секции объявлений. Аналогично любой другой объявленной там переменной, исключение действительно только для данного блока. Поскольку функция find_cost определена внутри того же блока, в ней можно ссылаться на исключение. Если бы она была определена как хранимая функция, то в ней нельзя было бы использовать имя этого исключения.

Программист может использовать свои собственные исключения для обработки ошибок, которые система не обнаруживает или не считает за ошибки. Например, система не знает, что количество товаров в заказе должно быть целым положительным числом. Однако приложение должно об этом знать, и программист может установить соответствующий контроль, перехватывая значения, не являющиеся положительными целыми числами, в ходе вычислений с количествами товаров.

Соседние файлы в папке лекции оракл