Обработка исключений — жизненно важный аспект программирования PL/SQL, позволяющий разработчикам корректно обрабатывать ошибки и поддерживать целостность своих приложений. В этой статье блога мы рассмотрим различные методы создания исключений в PL/SQL, приведя попутно примеры кода. К концу вы получите полное представление о методах обработки исключений и будете хорошо подготовлены к обработке ошибок в ваших программах PL/SQL.
- Использование предопределенных исключений.
PL/SQL предоставляет набор предопределенных исключений, которые можно использовать для обработки распространенных ошибок. К этим исключениям относятся NO_DATA_FOUND, Too_MANY_ROWS и другие. Вот пример использования исключения NO_DATA_FOUND:
DECLARE
emp_name employees.last_name%TYPE;
BEGIN
SELECT last_name INTO emp_name FROM employees WHERE employee_id = 1000;
DBMS_OUTPUT.PUT_LINE('Employee Name: ' || emp_name);
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('No employee found with ID 1000.');
END;
- Создание пользовательских исключений.
PL/SQL позволяет вам определять собственные исключения для обработки определенных сценариев в вашем приложении. Пользовательские исключения обеспечивают больший контроль и гибкость. Вот пример создания и использования пользовательского исключения:
DECLARE
ex_custom EXCEPTION;
PRAGMA EXCEPTION_INIT(ex_custom, -20001); -- Assigning an error code
BEGIN
RAISE ex_custom;
EXCEPTION
WHEN ex_custom THEN
DBMS_OUTPUT.PUT_LINE('Custom exception raised. Error code: -20001');
END;
- Обработка нескольких исключений.
PL/SQL позволяет обрабатывать несколько исключений с помощью нескольких предложений WHEN. Этот подход полезен, когда вам нужно по-разному обрабатывать разные исключения. Вот пример:
DECLARE
ex_custom EXCEPTION;
ex_other EXCEPTION;
PRAGMA EXCEPTION_INIT(ex_custom, -20001);
PRAGMA EXCEPTION_INIT(ex_other, -20002);
BEGIN
RAISE ex_other;
EXCEPTION
WHEN ex_custom THEN
DBMS_OUTPUT.PUT_LINE('Custom exception raised. Error code: -20001');
WHEN ex_other THEN
DBMS_OUTPUT.PUT_LINE('Other exception raised. Error code: -20002');
END;
- Распространение исключений.
Вы можете распространять исключения в вызывающую программу с помощью оператора RAISE, не обрабатывая их локально. Это позволяет процедурам более высокого уровня обрабатывать исключения. Вот пример:
CREATE OR REPLACE PROCEDURE proc1 AS
ex_custom EXCEPTION;
PRAGMA EXCEPTION_INIT(ex_custom, -20001);
BEGIN
RAISE ex_custom;
END;
CREATE OR REPLACE PROCEDURE proc2 AS
BEGIN
proc1;
EXCEPTION
WHEN ex_custom THEN
DBMS_OUTPUT.PUT_LINE('Exception propagated from proc1');
END;
Обработка исключений — важнейший навык для разработчиков PL/SQL, гарантирующий, что приложения смогут корректно обрабатывать ошибки и поддерживать целостность данных. В этой статье мы рассмотрели различные методы создания исключений в PL/SQL, включая использование предопределенных исключений, создание пользовательских исключений, обработку нескольких исключений и распространение исключений. Вооружившись этими методами и примерами кода, вы теперь хорошо подготовлены к написанию надежных программ PL/SQL, способных эффективно обрабатывать ошибки.