特定の例外でメッセージを記録する
複数の特定例外を捕捉する最も良い使い方のひとつは、例外が発生した正確な理由を把握できるよう、個別に処理して固有のエラーメッセージを記録することです。両方のエラー条件が起こりうる状況で、これを実践してみましょう。演習の後で、なぜその特定のメッセージが記録されたのかを解説します。
この演習はコースの一部です
PostgreSQL におけるトランザクションとエラー処理
演習の手順
not_null_violation用の例外ハンドラーを作成します。not_null_violationが発生した場合、errorsテーブルにmsgとして"failed to insert"、detailとしてGlucose can not be null.を挿入します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
-- 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;