開始使用免費開始

處理例外

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

這裡我們要處理 A1C,也就是有糖分附著在血紅素上的紅血球比例。一般來說,非受影響病患在空腹時應低於 5.7%,介於 5.7% 到 6.4% 為前期糖尿病,而高於 6.5% 通常代表糖尿病未受良好控制。

本練習屬於課程

PostgreSQL 的交易與錯誤處理

檢視課程

練習說明

  • 在適當的位置補上 DOBEGIN,完成交易區塊。
  • 新增一個例外,將 '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;
編輯並執行程式碼