我一直想这样做: do { let result = try getAThing()} catch { //error}do { let anotherResult = try getAnotherThing(result) //Error - result out of scope} catch { //error} 但似乎只能做到这一点: do { let result = try getAThi
do {
let result = try getAThing()
} catch {
//error
}
do {
let anotherResult = try getAnotherThing(result) //Error - result out of scope
} catch {
//error
}
但似乎只能做到这一点:
do {
let result = try getAThing()
do {
let anotherResult = try getAnotherThing(result)
} catch {
//error
}
} catch {
//error
}
有没有办法在不必嵌套do / catch块的情况下将不可变结果保留在范围内?有没有办法防止错误类似于我们如何使用guard语句作为if / else块的反转?
在Swift 1.2中,您可以将常量的声明与常量的赋值分开. (请参阅 Swift 1.2 Blog Entry中的“常量现在更强大且更一致”.)因此,将其与Swift 2错误处理相结合,您可以:let result: ThingType
do {
result = try getAThing()
} catch {
// error handling, e.g. return or throw
}
do {
let anotherResult = try getAnotherThing(result)
} catch {
// different error handling
}
或者,有时我们实际上不需要两个不同的do-catch语句,并且单个catch将处理一个块中的潜在抛出错误:
do {
let result = try getAThing()
let anotherResult = try getAnotherThing(result)
} catch {
// common error handling here
}
这取决于您需要什么类型的处理.
