Обработка исключений
В слайдах мы обсуждали важность предоставления правильного контекста для устранения ошибок. Один из аспектов, который нередко упускается при записи сообщений, — это более глубокое объяснение причин их возникновения. Зачастую ошибки описываются обобщённо: «Некорректное значение» или «Недопустимая дата». Однако с помощью деталей и контекста можно сделать эти сообщения значительно информативнее.
В этом упражнении мы будем работать с показателем 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;