2017-02-25 23:47:33 +08:00
|
|
|
|
# 错误处理
|
|
|
|
|
|
2017-03-23 22:37:22 +08:00
|
|
|
|
> [ch09-00-error-handling.md](https://github.com/rust-lang/book/blob/master/second-edition/src/ch09-00-error-handling.md)
|
2017-02-25 23:47:33 +08:00
|
|
|
|
> <br>
|
2017-03-23 22:37:22 +08:00
|
|
|
|
> commit 4f2dc564851dc04b271a2260c834643dfd86c724
|
2017-02-25 23:47:33 +08:00
|
|
|
|
|
2017-11-16 20:07:26 +08:00
|
|
|
|
Rust 对可靠性的执着也扩展到了错误处理。错误对于软件来说是不可避免的,所以当出现错误时, Rust 有很多特性来处理当前情况。在很多情况下,Rust 要求你承认出错的可能性并在编译代码之前就采取行动。通过确保不会只有在将代码部署到生产环境之后才会发现错误来使得程序更可靠。
|
2017-02-25 23:47:33 +08:00
|
|
|
|
|
2017-08-21 08:33:53 +08:00
|
|
|
|
Rust 将错误组合成两个主要类别:**可恢复错误**(*recoverable*)和 **不可恢复错误**(*unrecoverable*)。可恢复错误通常代表向用户报告错误和重试操作是合理的情况,比如未找到文件。不可恢复错误通常是 bug 的同义词,比如尝试访问超过数组结尾的位置。
|
2017-02-25 23:47:33 +08:00
|
|
|
|
|
2017-08-21 08:33:53 +08:00
|
|
|
|
大部分语言并不区分这两类错误,并采用类似异常这样方式统一处理他们。Rust 并没有异常。相反,对于可恢复错误有 `Result<T, E>` 值,以及 `panic!`,它在遇到不可恢复错误时停止程序执行。这一章会首先介绍 `panic!` 调用,接着会讲到如何返回 `Result<T, E>`。最后,我们会讨论当决定是尝试从错误中恢复还是停止执行时需要顾及的权衡考虑。
|