- 前段时间朋友打电话偶尔给我抱怨到,有人质疑为什么iOS 开发没有用try catch处理异常,自己开发在iOS开发过程中现在用的都是自动内存管理,有问题崩溃了就解决了,然后项目中也用到了友盟统计来查看用户的崩溃信息,感觉没有必要,直到今天突然看到swift也有try-catch,前面都是闲话,下面总结下:
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!,如果解析成功就有值,否则崩溃,有风险
let json2 = try! JSONSerialization.jsonObject(with: data!, options: [])
print("---------------\(json2)")
- 处理异常,能够接收到错误,并且输出错误
语法结构复杂,而且{}
do {
let json3 = try JSONSerialization.jsonObject(with: data!, options: [])
print(json3)
}catch {
print(error)
}
另外作为扩展的知识点
OC中有人用try catch吗?为什么?
因为我们现在用的一般事自动内存管理开发:编译自动添加retain\release\autorelease 如果使用try catch一旦不平衡,就会出现内存泄漏
有什么错误,或者有更多的见解,请赐教谢谢!