关于在Swift中try的一些知识点
letjsonString ="{\"name\": \"Zhangsan\"}"
//将字符串转换成data
letdata = jsonString.data(using: .utf8)
//反序列化 throw抛出异常
//方法一: 推荐使用try? 如果解析成功, 则有值, 否则为nil
letjson =try?JSONSerialization.jsonObject(with: data!, options: [])
print(json)
//方法二: 不推荐使用try!如果解析成功, 则有值, 否则fatal error 程序崩溃
letjson2 =try!JSONSerialization.jsonObject(with: data!, options: [])
print(json)
//方法三: do catch处理异常, 能够接受并且输出错误
//扩展, OC中是否使用try catch?为啥?
//因为try catch无法捕获UncaughtException,而oc中大部分crash如:内存溢出、野指针等都是无法捕获的,而能捕获的只是像数组越界之类(这真心需要catch么?),所以try catch对于oc来说,比较鸡肋。
//在ARC下开发, 编译器自动添加retain/release/autorelease如果用try catch一旦不平衡, 就会出现内存泄漏
do{
letjson3 =tryJSONSerialization.jsonObject(with: data!, options: [])
print(json3)
}catch{
print(error)
}
网友评论