例外処理を行う
スライドでは、解決に向けた適切なコンテキストを提供する重要性について説明しました。メッセージを記録するときに見落とされがちなのが、その背後にある理由付けです。多くの場合、エラーは "Bad value" や "Invalid date" のように汎用的です。しかし、詳細とコンテキストを加えることで、こうしたメッセージをより有用にできます。
ここでは A1C を扱います。A1C は、ヘモグロビンに糖が結合した赤血球の割合を示します。通常、空腹時の基準は、非罹患者では 5.7% 未満、前糖尿病では 5.7% 〜 6.4%、6.5% を超えると管理されていない糖尿病の指標となることが一般的です。
この演習はコースの一部です
PostgreSQL におけるトランザクションとエラー処理
演習の手順
- 必要な箇所に
DOとBEGINを記入して、トランザクションブロックを完成させてください。 - 例外を追加し、
'a1c is typically less than 14'をerrorsテーブルのcontext列に挿入してください。 - 使用する手続き型言語を指定して、例外処理を終了してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
-- Add a DO function
___ $$
-- BEGIN a transaction block
___
INSERT INTO patients (a1c, glucose, fasting)
values (20, 89, TRUE);
-- Add an EXCEPTION
____
-- Catch all exception types
WHEN others THEN
INSERT INTO errors (msg, detail, ___) VALUES
(
'failed to insert',
'This a1c value is higher than clinically accepted norms.',
'___'
);
END;
-- Make sure to specify the language
____ language 'plpgsql';
-- Select all the errors recorded
SELECT * FROM errors;