# 错误处理

错误属于软件中不可避免的事实，因此 Rust 有着数项特性用于处理出错情形。许多情况下，Rust 要求咱们在咱们的代码将要编译前，知晓错误的可能性并采取一些措施。这一要求通过确保咱们在将代码部署到生产环境前，发现错误并予以适当处理，让咱们的程序更加健壮！


Rust 分组错误为两个大类：

- 可恢复错误，*recoverable* errors；
- 与不可恢复错误, *unrecoverable* errors。


对于可恢复错误，比如 *文件未找到* 错误，我们很可能只想报告问题给用户并重试操作。而不可恢复错误总是一些 bug 的征兆，因此我们会希望立即停止程序。

大多数语言都未区分这两类错误，并使用诸如异常等机制以同样方式处理这两种错误。Rust 没有异常。相反，他有着

- 用于可恢复错误的类型 `Result<T, E>`；
- 与在程序遇到不可恢复错误时停止执行的 `panic!` 宏。

这一章首先介绍调用 `panic!` 宏，然后讨论返回 `Result<T, E>` 的值。此外，我们将探讨在决定是否尝试从错误中恢复，还是停止执行时的一些考量。


