错误处理
错误属于软件中的家常便饭,因此 Rust 提供了数种用于处理出错情形的特性。许多情况下,Rust 要求咱们在咱们代码编译前,知晓某个错误的可能性并采取一些措施。通过确保咱们在将代码部署到生产环境前,发现错误并进行适当处理,这一要求令到咱们的程序更加健壮!
Rust 将错误分为两大类:
- 可恢复 错误,recoverable errors;
- 与 不可恢复 错误, unrecoverable errors。
对于比如 文件未找到 这样的可恢复错误,我们很可能只想将此问题报告给用户并重试该操作。而比如试图访问超出某个数组末尾位置这种不可恢复错误,则总是一些代码问题,bugs,的表征,因此我们会打算立即停止程序。
大多数语言并不区分这两类错误,而是使用异常等机制,以同样方式处理这两种错误。Rust 没有异常。相反,他有着
- 用于可恢复错误的类型
Result<T, E>
; - 和在程序发生不可恢复错误时,停止执行的
panic!
宏。
本章首先介绍 panic!
宏的调用,然后讨论返回 Result<T, E>
的值。此外,我们将探讨在决定是尝试从错误中恢复,还是停止执行时的一些考量。