Uitzonderingen afhandelen
In de dia's hebben we besproken hoe je voldoende context meegeeft voor het oplossen van fouten. Een veelvoorkomend gemis bij het loggen van meldingen is de achterliggende reden. Fouten zijn vaak algemeen, zoals "Bad value" of "Invalid date". Met details en context kun je die meldingen echter verrijken.
Hier werken we met A1C: het percentage rode bloedcellen met suiker gebonden aan hemoglobine. Nuchtere waarden liggen doorgaans onder 5,7% voor mensen zonder afwijkingen, 5,7% tot 6,4% voor prediabetes, en boven 6,5% wijst meestal op onbehandelde diabetes.
Deze oefening maakt deel uit van de cursus
Transacties en foutafhandeling in PostgreSQL
Oefeninstructies
- Maak het transactiewerkblok af door waar nodig de
DO- enBEGIN-statements in te vullen. - Voeg een exceptie toe die
'a1c is typically less than 14'in de kolomcontextvan de tabelerrorsinvoegt. - Sluit de exceptie af door de gebruikte procedurele taal te specificeren.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
-- Add a DO function
___ $$
-- BEGIN a transaction block
___
INSERT INTO patients (a1c, glucose, fasting)
values (20, 89, TRUE);
-- Add an EXCEPTION
____
-- Catch all exception types
WHEN others THEN
INSERT INTO errors (msg, detail, ___) VALUES
(
'failed to insert',
'This a1c value is higher than clinically accepted norms.',
'___'
);
END;
-- Make sure to specify the language
____ language 'plpgsql';
-- Select all the errors recorded
SELECT * FROM errors;