完整的do-try-catch錯誤處理模式的語法如下:
do {
??? try 語句
???? 成功處理語句組
} catch 匹配錯誤 {
??? 錯誤處理語句組
}
在try 語句中可以產生錯誤,當然也可能不會產生錯誤,如果有錯誤發(fā)生,catch就會處理錯誤。catch代碼塊可以有多個,錯誤由哪個catch代碼塊處理是由catch后面的錯誤匹配與否而定的。錯誤類型的多少就決定了catch可以有多少。
例一
import Foundation
do {
//要做一些操作
let str = try NSString(contentsOfFile: filePath,?encoding:?? NSUTF8StringEncoding)//要嘗試做的事情
} catch let err as NSError {//如果失敗則進入catch代碼塊
err.description
}
do-try-catch這種錯誤模式與Java中異常處理機制非常類似,本意就是嘗試(try)做一件事情,如果失敗則捕獲(catch)處理。
二,錯誤類型
在Swift中錯誤類型必須遵從ErrorType 協(xié)議,其次考慮到錯誤類型的匹配,它應該被設計成為枚舉類型,枚舉類型非常適合將一組相關值關聯(lián)起來。
如果我們編寫訪問數據庫表程序,實現對表數據插入、刪除、修改和查詢等操作,我們會需要類似如下代碼的錯誤類型:
enum DAOError: ErrorType {
case NoData
case PrimaryKeyNull
}
NoData表示沒有數據情況,PrimaryKeyNull表示表的主鍵(Primary Key)為空情況。
那么我們就可以通過如下代碼捕獲錯誤。
do {
//try 訪問數據表函數或方法
} catch DAOError.NoData {
print("沒有數據。")
} catch DAOError.PrimaryKeyNull {
print("主鍵為空。")
}
原出處:鏈接?