使用 Result
进行结构化错误处理
在前面,我们看到了 Result
枚举。在遇到正常操作产生的预期错误时, 我们常会用到此方法:
use std::fs; use std::io::Read; fn main() { let file = fs::File::open("diary.txt"); match file { Ok(mut file) => { let mut contents = String::new(); file.read_to_string(&mut contents); println!("Dear diary: {contents}"); }, Err(err) => { println!("The diary could not be opened: {err}"); } } }
- 与
Option
方法相同,成功值位于Result
方法内部, 开发者必须显示提取成功值。因此,建议进行错误检查。在绝不应出现错误的情况下, 可以调用unwrap()
或expect()
方法,这也是一种开发者意向信号。 - 我们建议阅读
Result
文档。虽然课程中不会涉及该文档,但是有必要提到它。 该文档中包含许多便捷的方法和函数,对于函数式编程很有帮助。