从 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)
标准的 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)