从 do-catch 块访问变量的最佳实践

Best practice for accessing variables from a do-catch block

标准的 do-catch 块在 Swift 中看起来像这样:

let jsonEncoder = JSONEncoder()
do {
  let file = try jsonEncoder.encode(pets)
} catch {
  return
}
// want to access file here

我的问题是访问在 do-catch 块内创建的变量的最佳做法是什么?我的直觉是先在块外创建变量作为未包装的可选 (let file: Data!),但感觉不太优雅。有更好的方法吗?

您可以简单地在 do-catch 块的范围之外声明 file,然后在 do-catch 块之后访问它。这是有效的,因为你从 catch 块返回,所以你永远无法到达 print 语句而不初始化 file - 它要么从 do 块获取值或 catch 块中的函数 returns,在这种情况下 print 永远不会执行。

let jsonEncoder = JSONEncoder()
let file: Data
do {
    file = try jsonEncoder.encode(pets)
} catch {
    return
}
// Do whatever you need with file
print(file)