始める無料で始める

特定の例外でメッセージを記録する

複数の特定例外を捕捉する最も良い使い方のひとつは、例外が発生した正確な理由を把握できるよう、個別に処理して固有のエラーメッセージを記録することです。両方のエラー条件が起こりうる状況で、これを実践してみましょう。演習の後で、なぜその特定のメッセージが記録されたのかを解説します。

この演習はコースの一部です

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;
コードを編集して実行