小编Fer*_*tor的帖子

NSError 和 Swift 中的错误

我已经看到已经有一个关于 Swift和Swift 之间差异的问题,我知道这些差异。但是,我不理解下面代码片段的行为,因为它编译正确。Swift 的错误处理机制要求每个未出现在带有 throws 子句的函数中的 do-catch 块都包含一个通用处理程序(要么不包含任何其他内容,要么包含一个for Error)。然而,使用似乎具有相同的效果。这里有人知道原因吗?我在另一个问题中读到“任何符合 ErrorType 的类都可以转换为 NSError。这些功能在文档中进行了描述。”。然而,该答案指出的文档并没有向我澄清这一点,因为它重点关注我没有使用的 Objective-C。NSErrorErrorcatchcatchNSError

import Foundation
extension Int : Error {}
extension String : Error {}

func fErr() throws {
  let a = Int(readLine()!)!
  if a > 20 {
    throw 42
  } else {
    throw "An error occurred"
  }
}

func gErr() {
  do {
    try fErr()
  } catch let e as NSError {
    print(e)
  }
}
Run Code Online (Sandbox Code Playgroud)

error-handling nserror swift do-catch

5
推荐指数
2
解决办法
4820
查看次数

标签 统计

do-catch ×1

error-handling ×1

nserror ×1

swift ×1