使用 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 文档。虽然课程中不会涉及该文档,但是有必要提到它。 该文档中包含许多便捷的方法和函数,对于函数式编程很有帮助。