ios - 抛出异常的 Swift2 闭包

标签 ios macos swift swift2

我正在尝试创建一个可以抛出异常的闭包,并将其作为参数传递给另一个函数。例如:

extension NSManagedObjectContext {

  /// The same as performBlockAndWait, except it can handle closures that throw.
  func performBlockAndWaitOrThrow(block: (() -> throws Void)) throws {
    // ...
    try block()
  }
}

请注意| block | argument 是一个可以抛出异常的闭包。

但是,这无法编译。有什么办法可以做到这一点吗?

最佳答案

throws 关键字应位于箭头之前。编译如下:

extension NSManagedObjectContext {

    /// The same as performBlockAndWait, except it can handle closures that throw.
    func performBlockAndWaitOrThrow(block: (() throws -> Void)) throws {
        // ...
        try block()
    }
}

关于ios - 抛出异常的 Swift2 闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33361278/

相关文章:

ios - 当 "draw"被 UIKit 调用时?

android - 编译 irrlicht 时出错 - android 端口 (Mac OSX)

ios - 在 UITableView 单元格中设置按钮边框时出现 fatal error

ios - 在 iOS 后台进行信标测距

ios - 用于存储日期的 CoreData 推荐做法

ios - ssziarchive 错误

ios - 对齐文本与填充 SwiftUI

ios - 第一次使用后 ViewController 没有改变

ios - 如何使用 stat 实用程序而不是 subpathsOfDirectoryAtPath 来计算目录大小

objective-c - 如何确定我的应用程序从哪个路径运行?