gpt4 book ai didi

swift - Swift 2.0 中的异常。为什么是 'do' ?

转载 作者:可可西里 更新时间:2023-11-01 00:52:57 24 4
gpt4 key购买 nike

我很好奇为什么 Swift 语言工程师决定采用这种语法:

do {
let x = try statement that throws
try a void statement that throws
} catch {
}

与看起来完全相同的更传统的 try-catch 语法相比。除了在 Swift 的情况下,需要为抛出异常的每一行键入一个 try。

最佳答案

他们想使用try 来调用每个可以抛出的特定表达式。我想这样做的原因是关于异常的常见提示是它们是“不可见的 gotos”,用户如果不去查看他们正在使用的每个函数的定义,就无法判断将要抛出什么。在每次抛出函数调用时都需要 try,从而消除了这个问题。

我个人认为“不可见的 gotos”不是一个有效的提示。远非非结构化(如 goto),异常使错误处理高度结构化。此外,如果您正确使用异常,您几乎永远不需要一眼就能看出哪些函数抛出异常。有关详细信息,请参阅 http://exceptionsafecode.com ,详细讨论了异常的正确使用。

鉴于他们希望 try 成为抛出函数调用的显式调用,他们可能不想将其重用于传统的 try-block 语法。

他们也可能只是没有使用任何关键字:

{
let x = try foo()
} catch {
// ...
}

他们还使用 do 来引入任意嵌套范围:

do {
let x = foo()
}

其他语言已经使用没有任何关键字的大括号。大概他们觉得有一个关键字可以使语法更易于阅读或解析等等。

关于swift - Swift 2.0 中的异常。为什么是 'do' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30771683/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com