การจัดการ Exception
ในสไลด์ เราได้พูดถึงการระบุบริบทที่เหมาะสมเพื่อช่วยในการแก้ไขปัญหา สิ่งหนึ่งที่มักถูกมองข้ามเมื่อบันทึกข้อความแจ้งเตือนคือเหตุผลเชิงลึกที่อยู่เบื้องหลัง บ่อยครั้งข้อผิดพลาดมักมีข้อความกว้างๆ เช่น "Bad value" หรือ "Invalid date" แต่เราสามารถเพิ่มรายละเอียดและบริบทเพื่อทำให้ข้อความเหล่านั้นมีประโยชน์มากขึ้นได้
ในแบบฝึกหัดนี้ เราจะทำงานกับค่า A1C ซึ่งเป็นเปอร์เซ็นต์ของเม็ดเลือดแดงที่มีน้ำตาลเกาะอยู่กับฮีโมโกลบิน โดยทั่วไปค่าระดับน้ำตาลขณะอดอาหารที่ต่ำกว่า 5.7% ถือว่าปกติสำหรับผู้ที่ไม่มีภาวะเสี่ยง ค่าระหว่าง 5.7% ถึง 6.4% บ่งชี้ภาวะก่อนเบาหวาน และค่าที่สูงกว่า 6.5% มักเป็นสัญญาณของโรคเบาหวานที่ยังไม่ได้รับการควบคุม
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Transactions and Error Handling in PostgreSQL
คำแนะนำการฝึกหัด
- เติมคำสั่ง
DOและBEGINในส่วนที่กำหนดเพื่อให้บล็อก transaction สมบูรณ์ - เพิ่ม exception ที่แทรกค่า
'a1c is typically less than 14'ลงในคอลัมน์contextของตารางerrors - ปิด exception โดยระบุภาษาเชิงกระบวนการที่ใช้
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
-- 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;