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