НачатьНачать бесплатно

Запись сообщений при конкретных исключениях

Одно из лучших применений перехвата нескольких конкретных исключений — раздельная обработка и запись уникальных сообщений об ошибках, которые помогают точно понять причину возникшего исключения. Давайте применим это на практике в сценарии, где возможны оба условия ошибки. После упражнения мы обсудим, почему было перехвачено именно это конкретное сообщение.

Это упражнение является частью курса

Транзакции и обработка ошибок в PostgreSQL

Посмотреть курс

Инструкции к упражнению

  • Создайте обработчик исключения для not_null_violation.
  • Добавьте "failed to insert" в качестве значения msg и Glucose can not be null. в качестве значения detail в таблицу errors, если возникает исключение not_null_violation.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

-- 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;
Редактировать и запускать код