錯誤處理

ch09-00-error-handling.md
commit 1fedfc4b96c2017f64ecfcf41a0a07e2e815f24f

Rust 對可靠性的執著也延伸到了錯誤處理。錯誤對於軟體來說是不可避免的,所以 Rust 有很多特性來處理出現錯誤的情況。在很多情況下,Rust 要求你承認出錯的可能性,並在編譯代碼之前就採取行動。這些要求使得程序更為健壯,它們確保了你會在將代碼部署到生產環境之前就發現錯誤並正確地處理它們!

Rust 將錯誤組合成兩個主要類別:可恢復錯誤recoverable)和 不可恢復錯誤unrecoverable)。可恢復錯誤通常代表向用戶報告錯誤和重試操作是合理的情況,比如未找到文件。不可恢復錯誤通常是 bug 的同義詞,比如嘗試訪問超過數組結尾的位置。

大部分語言並不區分這兩類錯誤,並採用類似異常這樣方式統一處理他們。Rust 並沒有異常,但是,有可恢復錯誤 Result<T, E> ,和不可恢復(遇到錯誤時停止程式執行)錯誤 panic!。這一章會首先介紹 panic! 調用,接著會講到如何返回 Result<T, E>。此外,我們將探討決定是嘗試從錯誤中恢復還是停止執行時的注意事項。