Swift-异常处理

1.什么是异常

如果你对Swift有过使用,你就会发现有的方法会出现关键词throws,比如我们解析JSON文件时,会使用以下方法:

    open class func jsonObject(with data: Data, options opt: JSONSerialization.ReadingOptions = []) throws -> Any

所谓异常,便就是平常说的错误而已,Swift引入异常机制,就是为了防止我们在编程中忽略一些导致崩溃的错误,接下来,我们就来了解异常机制吧。

2.异常处理

当我们在调用Swift的方法时,如果后面有throws关键词时,一定要注意使用异常机制,处理异常需要用到关键词try。在Swift中有3种处理异常方式:

  1. try
  2. try?
  3. try!

1.try方式

使用try处理异常,当方法出现异常时,是由程序员来处理异常而不是系统来处理,代码结构如下:

let url = URL.init(string: "http://www.baidu.com")
    do {
         let jsonData = try Data.init(contentsOf: url!, options: Data.ReadingOptions.alwaysMapped)
           // 处理数据
           print(jsonData)
       } catch {
           // 处理异常
           print(error)
       }

一般来说,这种方式很少使用,因为可能有大量的代码放入到异常中或者非异常的括号中,这样代码可读性不好。

2.try?方式

相对于将异常由程序员来处理,交给电脑来处理毫无疑问是最好的方法了,而try?就做到了这一点:

let url = URL.init(string: "http://www.baidu.com")
guard let jsonData = try? Data.init(contentsOf: url!, options: Data.ReadingOptions.alwaysMapped) else {
     return
}

没有异常就会返回数据,有异常就返回nil,配合Swift的guard机制,简直不能在爽了,哈哈。

3.try!方式

相对于以上处理方式,try!毫无疑问最简单粗暴也是最危险的,那就是,你的代码是绝对不会出现异常的:

let url = URL.init(string: "http://www.baidu.com")
let jsonData = try! Data.init(contentsOf: url!, options: Data.ReadingOptions.alwaysMapped)

额,万一出现异常了,会怎么样?
崩掉。

3.结论

介绍了三种异常处理,毫无疑问,使用try?和guard是最合适的了,当然,try!最不推荐,除非你的代码不会抛出异常

但是,谁能保证了?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值