第八章:錯誤處理
8.2 丟擲和捕獲
本小節主要講了概念do catch
throws
相關的東西
先想想我們在上一節講了Result型別
知識點1: swift不會返回一個Result
來表示失敗,而是用throws
Result作用於型別
, throws作用於函式
知識點2:編譯器會認為throws是一個普通的返回
,不會像很多語言一樣帶來執行時的開銷。相對效率高一些
。
我們通過 do catch 去處理一個函式的throws 可以使用catch的匹配模式去捕獲具體的錯誤 或者在catch-all中去捕獲其他異常 如下
do{
}catch FileError.fileNotExist {
//檔案不存在的error
}catch{
//其他error
}
複製程式碼
自己自定義一個指定的error的用法。
我們可以通過建立自定義Error列舉去捕獲對於的錯誤型別
///建立error的列舉
enum MyCustomErrorType: Error {
case ErrorReason
case ErrorReason
case ErrorReason
}
///對應的error丟擲
func myThrowFunc() throws {
if 這裡error了 {
throw MyCustomErrorType.ErrorReason
}
}
///接收對應的error
do{
myThrowFunc()
}catch MyCustomErrorType.ErrorReason {
//指定的error
}catch{
//其他error
}
複製程式碼