错误处理

错误是软件开发中不可避免的一部分,因此 Rust 提供了许多功能来处理出错的情况。在许多情况下,Rust 要求你在代码编译之前就考虑到错误的可能性并采取一些措施。这个要求使得你的程序更加健壮,因为它确保了你在将代码部署到生产环境之前就能发现并妥善处理错误!

Rust 将错误分为两大类:*可恢复*错误和*不可恢复*错误。对于可恢复的错误,例如*文件未找到*错误,我们很可能只想向用户报告问题并重试操作。不可恢复的错误始终是 bug 的征兆,例如尝试访问数组末尾以外的位置,因此我们希望立即停止程序。

大多数语言不会区分这两种错误,而是使用相同的方式处理它们,例如使用异常机制。Rust 没有异常。相反,它使用 Result<T, E> 类型来处理可恢复的错误,并使用 panic! 宏在程序遇到不可恢复的错误时停止执行。本章首先介绍调用 panic!,然后讨论返回 Result<T, E> 值。此外,我们还将探讨在决定是尝试从错误中恢复还是停止执行时需要考虑的因素。