错误处理

ch09-00-error-handling.md
commit 199ca99926f232ee7f581a917eada4b65ff21754

错误是软件中无可否认的事实,所以 Rust 有很多特性来处理出现错误的情况在很多情况下,Rust 要求你承认出错的可能性,并在编译代码之前就采取行动。这些要求使得程序更为健壮,它们确保了你会在将代码部署到生产环境之前就发现错误并正确地处理它们!

Rust 将错误组合成两个主要类别:可恢复错误recoverable)和 不可恢复错误unrecoverable)。可恢复错误通常我们希望向用户报告错误并重试操作,比如未找到文件(file not found)错误。不可恢复错误通常是 bug 的同义词,比如尝试访问超过数组结尾的位置。

大部分语言并不区分这两类错误,并采用类似异常这样方式统一处理他们。Rust 并没有异常,但是,有可恢复错误 Result<T, E> ,和不可恢复(遇到错误时停止程序执行)错误 panic!。这一章会首先介绍 panic! 调用,接着会讲到如何返回 Result<T, E>。此外,我们将探讨决定是尝试从错误中恢复还是停止执行时的注意事项。