Bắt đầu ngayBắt đầu miễn phí

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

Xem khóa học

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ường msg, Glucose can not be null. vào trường detail trong bảng errors nếu xảy ra not_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;
Chỉnh sửa và Chạy Mã