在方法签名中使用特定错误类型抛出快速错误

Jul*_* B. 15 exception-handling ios swift

随着2.1中引入的新的swift 错误处理,是否有可能指定给定ErrorType的方法将抛出?

例如 class func nextOrderDate() throws OrderError -> NSDate {...}

Dan*_*iel 7

在 Swift 中,不是抛出特定类型,而是捕获特定类型,如下所示:

do {
   let date = try nextOrderDate() 
} catch let error as OrderError {
   print("OrderError")
} catch {
   print("other error")
}
Run Code Online (Sandbox Code Playgroud)

我见过很多次的解决方法是返回错误(在完成块中很常见):

class func nextOrderDate() -> (NSDate?, OrderError?)
Run Code Online (Sandbox Code Playgroud)

快速 5

您现在可以使用:

class func nextOrderDate() -> Result<NSDate, OrderError>
Run Code Online (Sandbox Code Playgroud)

  • 旧答案,但从 Swift 5 开始,解决方法可以使用“Result”类型。例如 `结果&lt; NSDate, OrderError&gt;` (3认同)