1.錯誤處理
使用錯誤處理(error handling) 來應對程序執行中可能會遇到的錯誤條件。
func canThrowAnError() throws {
// 這個函數有可能拋出錯誤
}
// 一個函數可以通過在聲明中添加throws關鍵詞來拋出錯誤消息。當你的函數能拋出錯誤消息時, 你應該在表達式中前置try關鍵詞。
do {
try canThrowAnError() // 沒有錯誤消息拋出
} catch {
// 有一個錯誤消息拋出
}
// 一個do語句創建了一個新的包含作用域,使得錯誤能被傳播到一個或多個catch從句。
2.斷言
可選類型可以讓你判斷值是否存在,你可以在代碼中優雅地處理值缺失的情況。然而,在某些情況下,如果值缺失或者值并不滿足特定的條件,你的代碼可能沒辦法繼續執行。這時,你可以在你的代碼中觸發一個斷言(asse rtion) 來結束代碼運行并通過調試來找到值缺失的原因。
//你可以使用全局 assert(_:_:file:line:) 函數來寫一個斷言。向這個函數傳入一個結果為 true 或者 false 的表達式以及一條信息,當表達式的結果
為false 的時候這條信息會被顯示:
let age = -3
assert(age >= 0, "A person's age cannot be less than zero")
// 因為 age < 0,所以斷言會觸發
何時使用斷言
當條件可能為假時使用斷言,但是最終一定要保證條件為真,這樣你的代碼才能繼續運行。
斷言的適用情景:
1> 整數類型的下標索引被傳入一個自定義下標實現,但是下標索引值可能太小或者太大。
2> 需要給函數傳入一個值,但是非法的值可能導致函數不能正常執行。
3> 一個可選值現在是 nil ,但是后面的代碼運行需要一個非 nil 值。