Înregistrarea mesajelor pentru excepții specifice
Unul dintre cele mai bune cazuri de utilizare a interceptării mai multor excepții specifice este gestionarea distinctă și înregistrarea unor mesaje de eroare unice, care te ajută să înțelegi exact de ce a apărut o excepție. Hai să aplicăm acest lucru într-un scenariu în care ambele condiții de eroare sunt posibile. După exercițiu vom discuta de ce a fost capturat tocmai mesajul respectiv.
Acest exercițiu face parte din cursul
Tranzacții și gestionarea erorilor în PostgreSQL
Instrucțiuni pentru exercițiu
- Construiește un handler de excepție pentru o
not_null_violation. - Inserează
"failed to insert"ca valoare pentrumsgșiGlucose can not be null.ca valoare pentrudetailîn tabelaerrors, dacă apare onot_null_violation.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
-- 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;