Zacznij terazZacznij za darmo

Rejestrowanie komunikatów dla konkretnych wyjątków

Jednym z najlepszych zastosowań przechwytywania wielu konkretnych wyjątków jest odrębna obsługa i rejestrowanie unikalnych komunikatów o błędach, które dokładnie wyjaśniają, dlaczego dany wyjątek wystąpił. Zastosujmy to w scenariuszu, w którym możliwe są oba warunki błędu. Po ćwiczeniu omówimy, dlaczego przechwycony został właśnie taki komunikat.

To ćwiczenie jest częścią kursu

Transakcje i obsługa błędów w PostgreSQL

Zobacz kurs

Instrukcje do ćwiczenia

  • Zbuduj procedurę obsługi wyjątku dla not_null_violation.
  • Jeśli wystąpi not_null_violation, wstaw "failed to insert" jako msg oraz Glucose can not be null. jako detail do tabeli errors.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

-- 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;
Edytuj i uruchom kod