在 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 块。