Swift學習筆記9--錯誤控制

1.Swift 中有4種處理錯誤的方式。你能夠把函數拋出的錯誤傳遞給調用此函數的代碼、用do-catch語句處理錯誤、將錯誤做爲可選類型處理、或者斷言此錯誤根本不會發生。函數

2.wift 中的錯誤處理並不涉及解除調用棧,這是一個計算代價高昂的過程。就此而言,throw語句的性能特性是能夠和return語句相媲美的。性能

3.一個標有throws關鍵字的函數被稱做throwing 函數。若是這個函數指明瞭返回值類型,throws關鍵詞須要寫在箭頭(->)的前面。只有 throwing 函數能夠傳遞錯誤。任何在某個非 throwing 函數內部拋出的錯誤只能在函數內部處理。spa

4.能夠使用try?經過將錯誤轉換成一個可選值來處理錯誤。若是在評估try?表達式時一個錯誤被拋出,那麼表達式的值就是nilcode

let x = try? someThrowingFunction()
//等價於
let y: Int?
do {
    y = try someThrowingFunction()
} catch {
    y = nil
}

5.能夠在表達式前面寫try!來禁用錯誤傳遞,這會把調用包裝在一個斷言不會有錯誤拋出的運行時斷言中。若是實際上拋出了錯誤,你會獲得一個運行時錯誤。blog

6.能夠使用defer語句在即將離開當前代碼塊時執行一系列語句。該語句讓你能執行一些必要的清理工做,無論是以何種方式離開當前代碼塊的——不管是因爲拋出錯誤而離開,仍是因爲諸如return或者break的語句。作用域

if exists(filename) {
        let file = open(filename)
        defer {
            close(file)
        }
       
        // close(file) 會在這裏被調用,即做用域的最後。
    }
相關文章
相關標籤/搜索