錯誤處理與型別安全
學習 Rust 的錯誤處理機制,包括 Result、Option 型別和錯誤傳播,對比 JavaScript 的異常處理
錯誤處理與型別安全
📖 學習目標
理解 Rust 的錯誤處理哲學,學會使用 Result
和 Option
型別,掌握錯誤傳播模式,對比 JavaScript 的異常處理機制。
🎯 錯誤處理哲學對比
JavaScript 的異常處理
JavaScript 使用 try-catch 機制處理異常:
正在加载...
Rust 的錯誤處理
Rust 使用型別系統處理錯誤,沒有異常機制:
正在加载...
錯誤處理差異
- 異常 vs 型別: JavaScript 使用異常,Rust 使用型別系統
- 執行時 vs 編譯時: JavaScript 執行時檢查,Rust 編譯時檢查
- 可恢復 vs 不可恢復: Rust 區分可恢復錯誤(Result)和不可恢復錯誤(panic)
- 顯式 vs 隱式: Rust 強制顯式處理錯誤,JavaScript 可以忽略異常
📦 Option 型別
處理可能為空的值
正在加载...
🔄 Result 型別
處理可能失敗的操作
正在加载...
🎯 錯誤處理最佳實踐
錯誤處理模式對比
正在加载...
進階錯誤處理函式庫
在實際專案中,為了更方便地定義和處理錯誤,Rust 社群提供了許多優秀的錯誤處理函式庫,例如:
thiserror
: 用於簡化自定義錯誤型別的定義,特別是當錯誤需要包含額外資訊或從其他錯誤型別派生時。它透過巨集自動實現Display
和Error
trait。anyhow
: 用於簡化錯誤傳播,特別是在應用程式層程式碼中。它提供了一個簡單的Result
型別別名anyhow::Result<T>
,並允許你輕鬆地將各種錯誤型別轉換為anyhow::Error
。
這些函式庫可以大大減少錯誤處理的樣板程式碼,提高程式碼的可讀性和可維護性。