Обработка ошибок
Обработка ошибок - это процесс управления возможными сбоями. Например если при чтении файла произошла ошибка, а мы будем и дальше использовать данные, выданные плохим чтением, это может привести к проблемам. Обнаружение и явное управление такими ошибками убережёт остальные части программы от различных неожиданностей.
В Rust есть разные пути работы с ошибками, которые описаны в следующих подразделах. Они все имеют чуть большие или чуть меньшие отличия, а также разные сценарии использования. Как правило:
Явный panic
в основном используется для тестирования и работы с невосстановимыми ошибками. При прототипировании его можно применять, например, когда мы работаем с ещё не реализованными функциями, но в этом случае лучше использовать более говорящее unimplemented
. В тестах panic
- разумный способ явного оповещения об ошибке.
Тип Option
предназначен для случаев, когда значение не обязательно или когда отсутствие значения не является ошибкой. Например, корневые директории /
и C:
не имеют родителя. При работе с Option
, для прототипирования и случаев, когда мы точно знаем, что значение должно быть, отлично подходит unwrap
. Однако более полезен expect
, так как он позволяет указать сообщение об ошибке на случай, если что-то пойдёт не так.
Когда есть вероятность, что что-то пойдёт не так и вызывающая сторона должна как-то обработать эту ситуацию, используйте Result
. Вы также можете использовать unwrap
и expect
(пожалуйста, не делайте этого, если вы не пишете тест или не прототипируете).
Для более полного изучения обработки ошибок, обратитесь к соответствующему разделу в книге.