我有一个这样定义的闭包:
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/