Xử lý exceptions
Trong các slide, chúng ta đã bàn về việc cung cấp ngữ cảnh phù hợp để xử lý sự cố. Một điểm thường bị bỏ qua khi ghi lại thông điệp lỗi là lý do sâu xa đằng sau. Nhiều khi lỗi rất chung chung như "Bad value" hoặc "Invalid date." Tuy vậy, bạn có thể dùng chi tiết và bối cảnh để làm rõ và hữu ích hơn cho các thông điệp đó.
Ở đây chúng ta sẽ làm việc với A1C, là tỷ lệ phần trăm hồng cầu có đường gắn vào hemoglobin. Thông thường, mức khi nhịn ăn dưới 5,7% đối với bệnh nhân không bị ảnh hưởng, từ 5,7% đến 6,4% là tiền tiểu đường, và trên 6,5% thường là dấu hiệu của bệnh tiểu đường không được kiểm soát.
Bài tập này là một phần của khóa học
Giao dịch và Xử lý Lỗi trong PostgreSQL
Hướng dẫn bài tập
- Hoàn thiện khối giao dịch bằng cách điền các câu lệnh
DOvàBEGINở nơi phù hợp. - Thêm một exception chèn
'a1c is typically less than 14'vào cộtcontextcủa bảngerrors. - Kết thúc exception bằng cách chỉ định ngôn ngữ thủ tục được sử dụng.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
-- 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;