Обработка ошибок и безопасность
Пишите надёжный код на C++ с правильной обработкой ошибок — исключения, гарантии безопасности RAII, типы-суммы и паттерны защитного программирования.
Исключения и стратегии обработки ошибок
Исключения: throw, try, catch
Разберитесь в механизме исключений C++ — раскрутка стека, стандартная иерархия исключений, пользовательские исключения и когда предпочтительнее исключения по сравнению с кодами ошибок.
Гарантии безопасности исключений
Изучите три уровня безопасности исключений — базовый, строгий и без выбрасывания — и как RAII и copy-and-swap их обеспечивают.
Стратегии обработки ошибок: выбор правильного подхода
Сравните исключения, коды ошибок и std::expected — узнайте, когда какой подход уместен и как обрабатывать ошибки в конструкторах, деструкторах и многопоточном коде.
Типобезопасность и защитное программирование
std::optional, std::variant и std::expected
Используйте типы-суммы C++17/23 для представления nullable-значений, типобезопасных объединений и возвратов «значение или ошибка» — устраняя целые классы ошибок во время компиляции.
Типобезопасность, утверждения и контракты
Используйте систему типов C++ для предотвращения ошибок во время компиляции — строгие перечисления, паттерн newtype, static_assert, утверждения времени выполнения и предстоящая возможность контрактов.
Понимание и избежание неопределённого поведения
Узнайте, что такое неопределённое поведение, зачем оно существует, как компиляторы используют его для оптимизации, и как обнаруживать его с помощью санитайзеров и предупреждений компилятора.