- 前段時間朋友打電話偶爾給我抱怨到恕洲,有人質(zhì)疑為什么iOS 開發(fā)沒有用try catch處理異常塔橡,自己開發(fā)在iOS開發(fā)過程中現(xiàn)在用的都是自動內(nèi)存管理,有問題崩潰了就解決了霜第,然后項目中也用到了友盟統(tǒng)計來查看用戶的崩潰信息葛家,感覺沒有必要,直到今天突然看到swift也有try-catch泌类,前面都是閑話癞谒,下面總結(jié)下:
swift中的try 有三種方式
- try?
" 推薦try刃榨? 如果解析成功就有值弹砚,否則就為nil
// 用guard守護確保有值
let jsonString = "{\"name\":\"zhang\"}"
let data = jsonString.data(using: .utf8)
// 用guard守護確保有值
guard let json = try? JSONSerialization.jsonObject(with: data!, options: []) else {
return
}
print("---------------\(json)")
- try!
方法2強烈不推薦try喇澡!迅栅,如果解析成功就有值,否則崩潰,有風(fēng)險
let json2 = try! JSONSerialization.jsonObject(with: data!, options: [])
print("---------------\(json2)")
- 處理異常,能夠接收到錯誤晴玖,并且輸出錯誤
語法結(jié)構(gòu)復(fù)雜读存,而且{}
do {
let json3 = try JSONSerialization.jsonObject(with: data!, options: [])
print(json3)
}catch {
print(error)
}
另外作為擴展的知識點
OC中有人用try catch嗎为流?為什么?
因為我們現(xiàn)在用的一般事自動內(nèi)存管理開發(fā):編譯自動添加retain\release\autorelease 如果使用try catch一旦不平衡让簿,就會出現(xiàn)內(nèi)存泄漏
有什么錯誤敬察,或者有更多的見解,請賜教謝謝尔当!