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