ComeçarComece de graça

Registrando mensagens em exceções específicas

Um dos melhores usos de capturar várias exceções específicas é tratar de forma distinta e registrar mensagens de erro únicas que ajudam você a entender exatamente por que uma exceção ocorreu. Vamos aplicar isso em um cenário em que ambas as condições de erro são possíveis. Depois do exercício, vamos discutir por que ele capturou a mensagem específica que capturou.

Este exercício faz parte do curso

Transações e Tratamento de Erros no PostgreSQL

Ver curso

Instruções do exercício

  • Construa um manipulador de exceção para not_null_violation.
  • Insira "failed to insert" como msg e Glucose can not be null. como detail na tabela errors se ocorrer uma not_null_violation.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

-- 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;
Editar e executar o código