XZ_Swift之Swift中的错误/异常处理、反序列化

Swift 2.0 推出的新的异常处理方法:使用 do-catch 机制获取和处理异常
try?
如果解析成功,就有值,如果转换失败,大多数会返回nil
try!
当开发者非常确定某个方法或者函数,在使用时候是绝对不会抛出任何异常的,这种情况下我们可以使用 try!
do-catch
最安全,但是也是最麻烦的
获取和处理异常,使用 catch 可以对异常的解析进行更为高级的处理
使用 throws 来声明异常,标明将会抛出异常,使用 throw 抛出异常

这里写图片描述

反序列化的时候经常会使用到

let jsonStr = "{\"name\":\"zhangsan\"}"
let data = jsonStr.data(using: .utf8)
// 反序列化 throw 抛出异常
// 方法一:推荐 try?:如果解析成功,就有值,如果转换失败,大多数会返回nil
let json = try? JSONSerialization.jsonObject(with: data!, options: [])
print(json ?? "没有值")

// 方法二:有风险,强烈不推荐 try!:如果解析成功,就有值,否则崩溃
let json1 = try! JSONSerialization.jsonObject(with: data!, options: [])

print(json1)

// 如果数据格式出现错误,变成下面的形式(name左侧的引号缺失),就会引起崩溃:
let jsonStr = "{name\":\"zhangsan\"}"

// 方法三:处理异常,能够接受到错误,并且输出错误
// 缺点:语法结构复杂
do {
    let json3 = try JSONSerialization.jsonObject(with: data!, options: [])
       print(json3)
   } catch {
       // 直接可以输出错误
       print(error)
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值