使用 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 說明文件。這不涵蓋在課程內,但值得一提。這份文件收錄許多方便的方法和函式,有助於您進行函式程式設計。