Запись сообщений при конкретных исключениях
Одно из лучших применений перехвата нескольких конкретных исключений — раздельная обработка и запись уникальных сообщений об ошибках, которые помогают точно понять причину возникшего исключения. Давайте применим это на практике в сценарии, где возможны оба условия ошибки. После упражнения мы обсудим, почему было перехвачено именно это конкретное сообщение.
Это упражнение является частью курса
Транзакции и обработка ошибок в PostgreSQL
Инструкции к упражнению
- Создайте обработчик исключения для
not_null_violation. - Добавьте
"failed to insert"в качестве значенияmsgиGlucose can not be null.в качестве значенияdetailв таблицуerrors, если возникает исключениеnot_null_violation.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
-- Make a DO function
DO $$
-- Open a transaction block
___
INSERT INTO patients (a1c, glucose, fasting) values (20, null, TRUE);
-- Catch an Exception
EXCEPTION
-- Make it catch check_violation exception types
WHEN check_violation THEN
-- Insert the proper msg and detail
INSERT INTO errors (msg, detail)
VALUES ('failed to insert', 'A1C is higher than clinically accepted norms.');
-- Make it catch not_null_violation exception types
___ ___ ___
-- Insert the proper msg and detail
INSERT INTO errors (msg, detail)
___ (___, ___);
END$$;
-- Select all the errors recorded
SELECT * FROM errors;