美文网首页
swift3 错误和异常处理

swift3 错误和异常处理

作者: 文瑶906 | 来源:发表于2017-06-29 11:43 被阅读0次

本文是 swifter-tips 的笔记

异常 和 错误

异常

异常往往是由程序员的错误导致的app无法继续运行。
例如:

  • 向一个无法响应某个消息的NSObject 对象发送了消息,会得到 NSInvalidArgumentException 的异常,并告诉
    程序员 ““unrecognized selector sent to instance”
  • 程序员使用一个超过数组元素数量的下标来试图访问 NSArray 的元素时,会得到 NSRangeException .

这种错误所导致的程序无法运行的问题是在开发阶段就全部解决的,而不应当出现在上架APP中。

错误

  • 由 NSError 代表的错误更多的指那些 “合理的”,用户在使用app中可能遇到的情况。
    例如:
  • 登录时候用户名密码验证后不匹配
  • 试图从某个文件中读取数据生成 NSData 对象时发生了问题(比如文件被意外修改了)等等

但 NSError 的使用方式其实在变相的鼓励开发者忽略错误。
例如:

[data writeToFile: path options: options error: nil];

在swift2.0 中 ,带有 NSError 指针作为参数的API 都被改成了可以抛出异常的形式。

open func write(toFile path: String, 
    options writeOptionsMask: NSData.WritingOptions) throws

使用方法为:

do {
    try d.write(toFile: "Hello", options: [])
} catch let error as NSError {
    print ("Error: \(error.domain)")
}

try 和 throws

try

  • try!标识强制执行,代表你确定知道这次调用不会抛出异常,如果调用中出现了移仓,程序崩溃。
  • try? 返回一个Optional值,如果运行成功,没有抛出错误,会返回一个包含这条语句的返回值,否者返回nil

throws

  • 在一个可以throw的方法里,我们永远不应该返回一个Optional的值。
  • 因为结合 try? 使用的话,这个 Optional 值将再次包装一层 Optional ,这种双重的 Optional 值 非常容易出现 错误。也十分迷惑。

rethrows

  • 和 throws 做的事情没有太多不同,都是标记了一个方法应该抛出错误
  • rethrows 一般用在参数中包含有可以 throws 的方法的高阶函数中,表示它既可以接受普通函数,也可以接受一个能throw的函数作为参数。
  • 可以将 rethrows 看做 throws 的 “子类”, rethrows 的方法可以用来重载那些被标记为 throws的方法或者参数。或用来满足被标记为 throws 的协议。
  • 如果不知道怎么用 :
    • 记住: 在要 throws 另一个 throws 时,应该将前者 改为 rethrows 。
  • 这样在不失灵活性的同时保证了 代码的 可读性和 准确性。

相关文章

  • swift3 错误和异常处理

    本文是 swifter-tips 的笔记 异常 和 错误 异常 异常往往是由程序员的错误导致的app无法继续运行。...

  • Java异常处理

    最近在学Java异常处理,码一下备忘。 异常和错误的区别和处理方式 首先,错误和异常都是程序运行中出现了问题,错误...

  • Java中异常和错误的区别及处理方式

    异常和错误的区别和联系 在Java中,异常和错误同属于一个类:Throwable。异常和错误都是Java异常处理重...

  • 错误和异常处理

    Python有两种错误很容易辨认:语法错误和异常。 1 什么是异常? 异常即是一个事件,该事件会在程序执行过程中发...

  • 错误和异常处理

    // 错误和异常处理 // 一些在开发阶段的错误,比如 向一个无法响应某个消息的 NSObject对象发送了消息,...

  • 错误和异常处理

    优雅的处理Pyhton错误或异常。 捕获一个异常。 捕获多个异常。 使用 finally 关键字,不管 try 代...

  • Swift中的异常处理

    1、错误和异常处理2、断言3、fatalError 1、错误和异常处理 在方法后面加throws关键字表示这个方法...

  • Python异常处理

    参考 Python菜鸟教程错误与异常 Python 异常处理 错误和异常 Python中(至少)有两种错误:语法错...

  • Swift3学习笔记:异常捕捉(Error Handling)

    异常捕捉(Error Handling) Swift的异常处理是在程序中响应错误和处理错误恢复程序正常运行的过程。...

  • PHP基础学习之路(3)

    这一次学习php的错误处理和异常处理主要介绍常见的错误和异常 常见错误 1.拼写错误 PHP中的常量和变量都是区别...

网友评论

      本文标题:swift3 错误和异常处理

      本文链接:https://www.haomeiwen.com/subject/cntecxtx.html