[swift 進階]讀書筆記-第八章:錯誤處理 C8P2 錯誤和函式引數

liaoWorking在掘金發表於2019-03-17

第八章:錯誤處理

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
}
複製程式碼
注:無論你有多少個自定義的catch分支 最後都要用一個catch { }去結尾,我們認為你無法將所有的error都考慮到。

文章原始檔地址,大家如果有更好的想法和觀點歡迎交流

簡書地址,覺得簡書中程式碼的顯示友好一些,也po上來吧~

相關文章