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
Instruções do exercício
- Construa um manipulador de exceção para
not_null_violation. - Insira
"failed to insert"comomsgeGlucose can not be null.comodetailna tabelaerrorsse ocorrer umanot_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;