Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Обработка ошибок

Ошибки в программах неизбежны, поэтому в Rust есть ряд средств для ситуаций, когда что-то идёт не так. Во многих случаях Rust требует, чтобы вы признали возможность ошибки и как-то на неё отреагировали, — иначе код не скомпилируется. Это делает программу надёжнее: вы гарантированно обнаружите ошибки и правильно их обработаете ещё до того, как код попадёт в продакшен!

Rust делит ошибки на две большие категории: исправимые и неисправимые. При исправимой ошибке (recoverable error), например файл не найден, скорее всего, достаточно сообщить пользователю о проблеме и повторить операцию. Неисправимые ошибки (unrecoverable errors) — это всегда признак бага, например попытки обратиться за конец массива, и в таких случаях программу нужно немедленно остановить.

Большинство языков не различают эти два вида ошибок и обрабатывают их одинаково — например, с помощью исключений. В Rust исключений нет. Вместо них есть тип Result<T, E> для исправимых ошибок и макрос panic!, который останавливает выполнение, когда программа сталкивается с неисправимой ошибкой. В этой главе мы сначала разберём вызов panic!, а потом поговорим о возврате значений Result<T, E>. А ещё обсудим, как решить, пытаться ли восстановиться после ошибки или остановить выполнение.