Swift 闭包异常处理

标签 swift closures swift4

我有一个这样定义的闭包:

 let processor: (MyBuffer) throws -> MyBuffer { buffer in

    let outputBuffer = try? self.processBuffer(self, inputBuffer: buffer)
    return outputBuffer

 }

self.processBuffer() 如果无法输出有效的非 nil 缓冲区,则会抛出异常。但是 Swift 编译器提示返回类型是可选的。我的问题是处理这种情况的唯一正确方法是强制展开可选的,或者有更好的方法来处理它?<​​/p>

最佳答案

使用 try 而不是 try?。如果 processBuffer 抛出,那么 Uncaught Error 将从您的闭包中抛出。否则,您将返回一个有效的 outputBuffer

let processor: (MyBuffer) throws -> MyBuffer = { buffer in

    let outputBuffer = try self.processBuffer(self, inputBuffer: buffer)
    return outputBuffer

}

关于Swift 闭包异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52441010/

相关文章:

javascript - 为什么我不能在 Javascript 中滚动循环?

ios - 无法解码 JSON,因为缺少 Content-Type

JavaScript 闭包 : uncaught reference

Swift 3.0 UITableViewDelege Objective-c 方法与要求的选择器不匹配

arrays - 快速比较数组

ios - 如何将目标操作添加到 UITableViewCell

javascript - 在循环中根据标准在 IIFE 中调用 setTimeout()

ios - UITextfield 在完成按钮单击 tableview 标题时删除

swift - UIActivityIndi​​cator 需要几秒钟才能被关闭

ios - 错误 : `call FirebaseApp.configure() before using Firestore`