Журналювання повідомлень для конкретних винятків
Одне з найкращих застосувань перехоплення кількох конкретних винятків — окремо обробляти їх і записувати унікальні повідомлення про помилки, які допомагають точно зрозуміти, чому стався виняток. Застосуймо це у сценарії, де можливі обидві умови помилки. Після вправи обговоримо, чому було зафіксовано саме це конкретне повідомлення.
Ця вправа є частиною курсу
Транзакції та обробка помилок у 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;