在 do-catch 语句中,一旦一个 "try" 抛出错误,执行会在 "do" 内停止,还是会尝试一切?
In a do-catch statement, will execution stop inside "do" as soon as one "try" throws an error or will everything be attempted?
例如:
do {
try throwableFunction()
try anotherThrowableFunction()
nonThrowingFunction()
} catch {
print(error)
}
即使第一个 try
语句中的一个抛出,nonThrowingFunction()
是否总是执行?
是的,执行在第一次失败时停止。否则代码处于无效状态。考虑一个可选值返回 nil 的情况,你将如何继续访问它的属性?如果您需要以独特的方式处理不同的 try 语句,那么您将需要多个 do/catch 范围或多个 catch 测试。
一旦抛出函数实际抛出错误,它将通过 catch 块恢复。
在您的示例中:如果 throwableFunction()
实际上抛出,则不会执行其他语句,但程序将继续执行 catch 块。
例如:
do {
try throwableFunction()
try anotherThrowableFunction()
nonThrowingFunction()
} catch {
print(error)
}
即使第一个 try
语句中的一个抛出,nonThrowingFunction()
是否总是执行?
是的,执行在第一次失败时停止。否则代码处于无效状态。考虑一个可选值返回 nil 的情况,你将如何继续访问它的属性?如果您需要以独特的方式处理不同的 try 语句,那么您将需要多个 do/catch 范围或多个 catch 测试。
一旦抛出函数实际抛出错误,它将通过 catch 块恢复。
在您的示例中:如果 throwableFunction()
实际上抛出,则不会执行其他语句,但程序将继续执行 catch 块。