Consigner des messages pour des exceptions spécifiques
L’un des meilleurs usages de l’interception de plusieurs exceptions spécifiques est de gérer séparément et de consigner des messages d’erreur distincts qui permettent de comprendre précisément pourquoi une exception s’est produite. Appliquons cela dans un scénario où les deux conditions d’erreur sont possibles. Nous verrons après l’exercice pourquoi un message particulier a été capturé.
Cet exercice fait partie du cours
Transactions et gestion des erreurs dans PostgreSQL
Instructions
- Créez un gestionnaire d’exception pour
not_null_violation. - Insérez
"failed to insert"commemsgetGlucose can not be null.commedetaildans la tableerrorssi unenot_null_violationse produit.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
-- 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;