开始使用免费开始使用

处理异常

在幻灯片中,我们讨论了为问题的解决提供恰当的上下文。记录消息时,经常被忽视的一点是更深层的原因。很多时候,错误信息很泛,比如 "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;
编辑并运行代码