Ausnahmen behandeln
In den Folien haben wir darüber gesprochen, passenden Kontext für die Fehlerbehebung bereitzustellen. Ein Punkt, der beim Aufzeichnen von Meldungen oft übersehen wird, ist die tiefergehende Begründung dafür. Häufig sind Fehlermeldungen generisch wie „Bad value“ oder „Invalid date“. Mit Details und Kontext können wir diese Meldungen jedoch deutlich aussagekräftiger machen.
Hier arbeiten wir mit A1C, also dem Anteil der roten Blutkörperchen in Prozent, an deren Hämoglobin Zucker gebunden ist. Typischerweise liegen Nüchternwerte bei nicht betroffenen Patient:innen unter 5,7 %, 5,7 % bis 6,4 % weisen auf Prädiabetes hin, und über 6,5 % ist meist ein Hinweis auf unbehandelten Diabetes.
Diese Übung ist Teil des Kurses
Transaktionen und Fehlerbehandlung in PostgreSQL
Anleitung zur Übung
- Vervollständige den Transaktionsblock, indem du die Anweisungen
DOundBEGINdort ausfüllst, wo sie benötigt werden. - Füge eine Exception hinzu, die
'a1c is typically less than 14'in die Spaltecontextder Tabelleerrorseinfügt. - Beende die Exception, indem du die verwendete prozedurale Sprache angibst.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
-- 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;