Обработка ошибок
Ошибки — неотъемлемая часть разработки программного обеспечения, поэтому в Rust существует ряд возможностей для обработки ситуаций, когда что-то идёт не так. Во многих случаях Rust требует, чтобы вы признали возможность ошибки и предприняли некоторые действия, прежде чем ваш код скомпилируется. Это требование делает вашу программу более надёжной, обеспечивая обнаружение ошибок и их правильную обработку до развёртывания кода в производственной среде!
Rust группирует ошибки на две основные категории: восстанавливаемые и невосстанавливаемые ошибки. Для восстанавливаемой ошибки, такой как ошибка «файл не найден», мы, скорее всего, просто хотим сообщить о проблеме пользователю и повторить операцию. Невосстанавливаемые ошибки всегда являются симптомами багов, таких как попытка доступа к элементу за пределами массива, и поэтому мы хотим немедленно остановить программу.
Большинство языков не различают эти два вида ошибок и обрабатывают их одинаково,
используя такие механизмы, как исключения. В Rust нет исключений. Вместо этого
существует тип Result<T, E> для восстанавливаемых ошибок и макрос panic!,
который останавливает выполнение, когда программа сталкивается с
невосстанавливаемой ошибкой. Эта глава сначала охватывает вызов panic!, а
затем рассказывает о возврате значений Result<T, E>. Кроме того, мы рассмотрим
соображения при принятии решения о попытке восстановления после ошибки или
остановке выполнения.