Swift学习:错误处理

Posted CHM

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift学习:错误处理相关的知识,希望对你有一定的参考价值。

  错误处理(Error handling)是响应错误以及从错误中恢复的过程。Swift 提供了在运行时对可恢复错误的抛出、捕获、传递和操作的一等公民支持。

  某些操作无法保证总是执行完所有代码或总是生成有用的结果。可选类型可用来表示值缺失吗,但是当某个操作失败时,最好能得知失败的原因,从而可以作出相应的应对。

  举个例子,假如有个从磁盘上的某个文件读取数据并进行处理的任务,该任务会有多种可能失败的情况,包括指定路径下文件并不存在,文件不具有可读权限,或者文件编码格式不兼容。区分这些不同的失败情况可以让程序解决并处理某些错误,然后把它解决不了的错误报告给用户。

  注意

  swift 中的错误处理涉及到错误处理模式,这会用到 Cocoa 和 Objective-C 中的 NSError。

  表示并抛出错误

  在 swift 中,错误用符合 Error 协议的类型的值来表示。这个空协议表明该类型可以用于错误处理。

  swift 的枚举类型尤为适合构建一组相关的错误状态,枚举的关联值还可以提供错误状态的额外信息。例如,你可以这样表示在一个游戏中操作自动贩卖时可能出现的错误状态:

  enum VendingMachineError: Error {

    case invalidSelection // 选择无效

    case insufficientFunds(coinsNeeded: Int) // 金额不足

    case outOfStock // 缺货

  }

  抛出一个错误可以让你表明有意外情况发生,导致正常的执行流程无法继续执行。抛出错误使用 throw 关键字。例如,下面的代码抛出一个错误,提示贩卖机还需要 5 个硬币:

  throw VendingMachineError.insufficientFunds(coinsNeeded: 5)

  处理错误

  某个错误被抛出时,附近的某部分代码必须负责处理这个错误,例如纠正这个问题、尝试另一种方式、或是向用户报告错误。

  

  

以上是关于Swift学习:错误处理的主要内容,如果未能解决你的问题,请参考以下文章

《从零開始学Swift》学习笔记(Day 52)——Cocoa错误处理模式

Swift学习:错误处理

Swift学习笔记-错误处理和泛型

Swift学习笔记9--错误控制

《从零开始学Swift》学习笔记(Day 53)——do-try-catch错误处理模式

通过 try 块处理 Swift 2.2 错误