如何在Swift5、Swift5中使用try with data.withUnsafeBytes()?

How to use try with data.withUnsafeBytes() in Swift 5, Swift5?

如果我在我的代码中选择点击 withUnsafeBytes,声明声明该函数抛出:

func withUnsafeBytes<R>(_ body: (UnsafeRawBufferPointer) throws -> R) rethrows -> R

当我在我的代码中输入 do try catch 时(见下文),我收到了警告警告:

No calls to throwing functions occur within 'try' expression

以及捕获的匹配警告:

'catch' block is unreachable because no errors are thrown in 'do' block

是我的代码不正确还是 Xcode 的问题?

func getIntValue(data:Data)->Int
{
    var d = -1
    
    do {
        d = try data.withUnsafeBytes {
            [=13=].load(as: Int.self)
        }
        
    } catch {
        return d
    }
    return d
}

感谢您的意见。

throws -> rethrows 语法执行以下操作:

  • 如果闭包体中的代码包含抛出函数,则错误将被重新抛出,您必须添加 try
  • 如果没有抛出函数,则什么也不会发生,您不能使用 try

在您的示例中,出现第二种情况,因此删除 trydo - catch