Обробка винятків
На слайдах ми обговорювали, як надавати коректний контекст для розв'язання проблем. Одна з речей, яку часто ігнорують під час запису повідомлень, — це глибше пояснення причин. Часто помилки мають загальний вигляд, на кшталт «Bad value» або «Invalid date». Втім, ми можемо збагатити ці повідомлення деталями та контекстом.
Тут ми працюватимемо з A1C — це відсоток еритроцитів, до гемоглобіну яких приєднаний цукор. Зазвичай показники натще для людей без діабету — нижче 5,7%, від 5,7% до 6,4% — передіабет, а понад 6,5% зазвичай свідчить про неконтрольований діабет.
Ця вправа є частиною курсу
Транзакції та обробка помилок у PostgreSQL
Інструкції до вправи
- Завершіть транзакційний блок, заповнивши оператори
DOіBEGINтам, де це потрібно. - Додайте виняток, який вставляє
'a1c is typically less than 14'у стовпецьcontextтаблиціerrors. - Завершіть виняток, указавши використану процедурну мову.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
-- 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;