错误处理
错误是软件中不可避免的现实,因此 Rust 提供了许多功能来处理出错的情况。在很多情况下,Rust 要求你在代码编译之前就承认错误发生的可能性并采取某些措施。这一要求通过确保你在将代码部署到生产环境之前就发现并妥善处理错误,使你的程序更加健壮!
Rust 将错误分为两大类:可恢复的(recoverable)错误和不可恢复的(unrecoverable)错误。对于可恢复错误,例如文件未找到错误,我们通常只想向用户报告问题并重试操作。不可恢复错误总是 bug 的症状,例如尝试访问数组末尾之后的位置,因此我们希望立即停止程序。
大多数语言不区分这两种错误,而是用异常等机制以相同的方式处理它们。Rust 没有异常。相反,它使用 Result<T, E> 类型处理可恢复错误,使用 panic! 宏在程序遇到不可恢复错误时停止执行。本章首先介绍如何调用 panic!,然后讨论如何返回 Result<T, E> 值。此外,我们还将探讨在决定是尝试从错误中恢复还是停止执行时需要考虑的因素。