Обработка ошибок
Option и Result, оператор ?, паника и раскрутка стека, свои типы ошибок, Box<dyn Error>.
Тема объясняет обработку ошибок: восстановимые ошибки как значения Option и Result и невосстановимые как панику (panic). Вопросы проверяют комбинаторы и мосты между Option и Result, разницу между map и and_then, энергичное вычисление аргумента ok_or, предупреждение о неиспользованном Result и требование Debug для unwrap. Раздел об операторе ? разбирает, к каким типам он применим, почему он возвращает из ближайшей функции или замыкания и почему выполняет ровно одно преобразование через From. Отдельно рассматриваются паника, раскрутка стека (unwinding) и аварийное завершение (abort): вызов деструкторов при раскрутке, паника в Drop, catch_unwind и UnwindSafe, #[track_caller], коды завершения процесса и то, что process::exit деструкторы не вызывает. Последние разделы посвящены своим типам ошибок и Box<dyn Error>: зачем трейту Error нужен Display, что даёт source, как main печатает возвращённую ошибку, почему Box<dyn Error> сам не реализует Error и как вернуть конкретный тип через downcast_ref.
38 вопросов: базовый уровень — 19, средний — 14, углублённый — 5. 5 справок, 30 источников.
Разделы
OptionиResult- Оператор
?иFromдля ошибок - Паника, unwind, abort
- Свои типы ошибок, трейт
Error Box<dyn Error>и обёртки
Предыдущая тема: Преобразования типов · Следующая тема: Модули, Cargo, фичи, редакции