Logga meddelanden vid specifika undantag
Ett av de bästa sätten att använda fångst av flera specifika undantag är att hantera och logga unika felmeddelanden som hjälper dig att förstå exakt varför ett undantag uppstod. Vi tillämpar det här i ett scenario där båda felvillkoren är möjliga. Efter övningen går vi igenom varför just det specifika meddelandet fångades.
Den här övningen är en del av kursen
Transaktioner och felhantering i PostgreSQL
Övningsinstruktioner
- Bygg en undantagshanterare för
not_null_violation. - Infoga
"failed to insert"sommsgochGlucose can not be null.somdetaili tabellenerrorsom ettnot_null_violation-undantag inträffar.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
-- 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;