ПочатиПочніть безкоштовно

Журналювання повідомлень для конкретних винятків

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

Ця вправа є частиною курсу

Транзакції та обробка помилок у 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;
Редагувати та запускати код