Belirli istisnalarda mesajları günlüğe kaydetme
Birden fazla belirli istisnayı yakalamanın en iyi kullanımlarından biri, istisnanın neden gerçekleştiğini tam olarak anlamana yardımcı olan benzersiz hata mesajlarını ayrı ayrı ele almak ve günlüğe kaydetmektir. Her iki hata koşulunun da mümkün olduğu bir senaryoda bunu uygulayalım. Egzersizden sonra neden belirli mesajı yakaladığını tartışacağız.
Bu egzersiz
PostgreSQL'de İşlemler (Transaction) ve Hata Yönetimi
kursunun bir parçasıdırEgzersiz talimatları
not_null_violationiçin bir istisna yakalayıcı oluştur.- Bir
not_null_violationoluşursaerrorstablosunamsgolarak"failed to insert",detailolarakGlucose can not be null.ekle.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
-- 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;