Berichten loggen bij specifieke exceptions
Een van de beste toepassingen van meerdere specifieke exceptions opvangen is dat je unieke foutmeldingen apart kunt afhandelen en loggen. Zo begrijp je precies waarom een exception optrad. Laten we dit toepassen in een scenario waarin beide foutcondities mogelijk zijn. Na de oefening bespreken we waarom precies dit specifieke bericht werd vastgelegd.
Deze oefening maakt deel uit van de cursus
Transacties en foutafhandeling in PostgreSQL
Oefeninstructies
- Bouw een exception handler voor een
not_null_violation. - Voeg
"failed to insert"in alsmsgenGlucose can not be null.als dedetailin de tabelerrorsals er eennot_null_violationoptreedt.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
-- 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;