原創(chuàng)文章抬伺,歡迎轉(zhuǎn)載穆律。轉(zhuǎn)載請(qǐng)注明:關(guān)東升的博客
Swift錯(cuò)誤處理模式,在Swift 1.x和Swift 2.0是不同的兩種模式滋早。
Swift 1.x代碼錯(cuò)誤處理模式采用Cocoa框架錯(cuò)誤處理模式,到現(xiàn)在Objective-C還沿用這種處理模式砌们,而Swift 2.0之后采用了do-try-catch錯(cuò)誤處理模式杆麸。
下面的示例代碼是從文件中讀取字符串到內(nèi)存中,如果使用Swift 1.x錯(cuò)誤處理模式代碼如下:
import Foundation
var err: NSError? //定義可選的NSError?變量
let contents = NSString(contentsOfFile: filePath,
? encoding: NSUTF8StringEncoding, error: &err)
if err != nil { //判斷err變量是否還是nil
// 錯(cuò)誤處理
}
NSError?一定是可選的變量浪感,因?yàn)橐o它初始化為nil昔头。
判斷err變量是否還是nil,如果還是nil在代碼
let contents = NSString(contentsOfFile: filePath,
encoding: NSUTF8StringEncoding, error: &err)
方法調(diào)用過程中沒有發(fā)生錯(cuò)誤影兽,否則說明有錯(cuò)誤發(fā)生减细。
上述代碼的構(gòu)造函數(shù),它的Swift語法定義如下:
init?(contentsOfURL url: NSURL,
encoding enc: UInt,
error error: NSErrorPointer)
構(gòu)造函數(shù)的最后一個(gè)參數(shù)是NSErrorPointer(即NSError指針)赢笨,那么在實(shí)際調(diào)用時(shí)候我們需要傳遞err變量地址(即&err)未蝌,&是取地址符。當(dāng)方法調(diào)用完成后茧妒,如果有錯(cuò)誤則err變量會(huì)被賦值萧吠。