Обработка ошибок
Возникновение ошибок в ходе выполнения программ — это суровая реальность жизни. В Rust есть ряд функций для обработки ситуаций, когда что-то идёт не так. Во многих случаях Rust требует, чтобы вы признали возможность ошибки и предприняли некоторые действия, прежде чем ваш код будет скомпилирован. Это требование делает вашу программу более надёжной, гарантируя, что вы обнаружите ошибки и обработаете их надлежащим образом, прежде чем дадите код конечным пользователям!
Rust groups errors into two major categories: recoverable and unrecoverable errors. For a recoverable error, such as a file not found error, we most likely just want to report the problem to the user and retry the operation. Unrecoverable errors are always symptoms of bugs, such as trying to access a location beyond the end of an array, and so we want to immediately stop the program.
Большинство языков не различают эти два вида ошибок и обрабатывают их одинаково, используя такие механизмы, как исключения. В Rust нет исключений. В качестве альтернативы в нём есть тип Result<T, E> (для исправимых ошибок) и макрос panic!, который останавливает исполнение, когда программа встречает неисправимую ошибку. Сначала речь пойдёт про вызов макроса panic!, а потом — о возврате значений Result<T, E>. Кроме того, мы рассмотрим, что нужно учитывать при принятии решения о том, следует ли попытаться исправить ошибку или остановить исполнение.