處理例外
在投影片中,我們討論了為問題解決提供適當脈絡。記錄訊息時,常被忽略的一點是更深層的原因。許多錯誤常見而籠統,比如「Bad value」或「Invalid date」。不過,我們可以借由細節與脈絡,讓這些訊息更有意義。
這裡我們要處理 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;