错误处理

错误是软件生命中不可避免的一部分,所以 Rust 提供了一些特性来处理出错的情况。在很多情况下,Rust 要求你承认错误的可能性并在代码编译之前采取一些措施。这个要求通过确保你在将代码部署到生产环境之前发现错误并适当处理,使得你的程序更加健壮!

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

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