CoronaErrors

一系列便捷的类型、方法和一个异常层级结构,旨在简化错误处理。

请参阅 https://coopercorona.github.io/CoronaErrors/ 获取 API 文档。

错误类型 (Errors)

所有 Error 类型都是符合 Error 协议的枚举。 每种类型在逻辑上将相似类型的错误组合在一起。 所有 Error 类型都具有对应的 Exception 类型。

IOError

当输入/输出操作无法完成时发生。

OperationError

当操作无法完成时发生。

ParseError

当解析某种对象为另一种对象时发生。

ValueError

当变量的值以某种方式不正确时发生。

异常 (Exceptions)

异常封装了一个 Error 和额外的元数据,包括一条解释性的消息和堆栈跟踪。 Exception 符合 Error,因此可以像任何其他 Error 一样抛出和捕获。 子类用于提供额外的上下文信息,并允许更具体的捕获语句。

可以按如下方式捕获异常

func throwException() { throw Exception(error: ValueError.nil, message: "nil")
do {
  try throwException()
} catch let error as Exception {
  // Do something with the error...
}

可以使用 where 子句捕获特定的底层错误

func throwException() { throw Exception(error: ValueError.nil, message: "nil")
do {
  try throwException()
} catch let error as Exception where error.error == ValueError.nil {
  // Do something with the error...
}

Exception 的子类可以重写 descriptionComponents 以在异常的字符串表示形式中包含额外的信息。 子类必须调用父类的实现并将其添加到自定义组件之前。

IOException

IOError 引起的异常。

FileNotFoundException

IOError.fileNotFound 错误引起的 IOException

NilException

ValueError.nil 错误引起的异常。 基于为 nil 的变量类型进行参数化。 要捕获任何类型的 NilException,而不考虑类型,请捕获 AnyNilException。 这是必需的,因为 NilException<T> 不能转换为 NilException<U>,无论 T 是否可以转换为 U,所以尝试捕获 NilException<Any> 将失败。

OperationError

OperationError 引起的异常。

ParseException

ParseError 引起的异常。

ValueError

ValueError 引起的异常。 公开导致异常的值的不正确性。 ValueError<T>.expected 通过传入期望的值以及实际值来构造 ValueError 实例,自动设置 message 属性以解释期望的值。