Ghi log thông điệp khi gặp các ngoại lệ cụ thể
Một trong những cách hay nhất khi bắt nhiều ngoại lệ cụ thể là xử lý riêng và ghi log thông điệp lỗi rõ ràng để bạn biết chính xác vì sao ngoại lệ xảy ra. Hãy áp dụng điều này trong một tình huống có thể xảy ra cả hai điều kiện lỗi. Sau bài tập, chúng ta sẽ thảo luận vì sao nó lại ghi nhận đúng thông điệp cụ thể đó.
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
- Xây dựng một bộ xử lý ngoại lệ cho
not_null_violation. - Chèn
"failed to insert"vào trườngmsg,Glucose can not be null.vào trườngdetailtrong bảngerrorsnếu xảy ranot_null_violation.
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.
-- Make a DO function
DO $$
-- Open a transaction block
___
INSERT INTO patients (a1c, glucose, fasting) values (20, null, TRUE);
-- Catch an Exception
EXCEPTION
-- Make it catch check_violation exception types
WHEN check_violation THEN
-- Insert the proper msg and detail
INSERT INTO errors (msg, detail)
VALUES ('failed to insert', 'A1C is higher than clinically accepted norms.');
-- Make it catch not_null_violation exception types
___ ___ ___
-- Insert the proper msg and detail
INSERT INTO errors (msg, detail)
___ (___, ___);
END$$;
-- Select all the errors recorded
SELECT * FROM errors;