Обработка ошибок
Исключения и std::expected: когда что
После урока ты сможешь
- Бросать и ловить исключения стандартных типов
- Возвращать ошибки через std::expected
- Выбирать стратегию обработки ошибок осознанно
Шаг 1 из 7
Ошибки бывают разные
Программа, которая работает только на правильных данных, — это демонстрация, а не программа. В реальности файл не найдётся, пользователь введёт буквы вместо числа, сервер не ответит. Вопрос не в том, случатся ли ошибки, а в том, как программа о них сообщает.
В C++ есть три основных способа:
std::optional— «результата нет», без объяснения причин (уже знаешь).std::expected(C++23) — «вот результат, а если не получилось, вот описание ошибки». Ошибка — обычное значение, которое возвращают и проверяют.- Исключения — «случилось что-то, с чем здесь справиться нельзя». Ошибка «вылетает» из функции и летит вверх по стеку вызовов, пока её не поймают.