【发布时间】:2010-10-25 17:46:19
【问题描述】:
try 语句的可选else 子句的预期用途是什么?
【问题讨论】:
-
大多数答案似乎都集中在为什么我们不能将材料放在 try 子句本身的 else 子句中。问题stackoverflow.com/questions/3996329 专门询问为什么 else 子句代码不能在 try 块本身之后运行,并且该问题被复制到这个问题上,但我在这里没有看到对该问题的明确答复。我觉得stackoverflow.com/a/3996378/1503120 很好地回答了这个问题。我还试图在stackoverflow.com/a/22579805/1503120 阐明各种条款的各种意义。
-
如果在最终清理之前没有触发异常,那么您希望发生一些事情,这不应该触发相同的异常处理。
-
在忘记了
else在try/else和for/else中的作用无数次之后,我在心理上将它与noexcept和nobreak在这些各自的上下文中混为一谈。就我个人而言,我发现它是一个不幸的单词重载,我尽量避免使用它,因为它迫使人们阅读代码想知道“这东西又做了什么?”通常,一个标志、continue或break语句可以用几行额外的代码来传达我想要表达的内容,但肯定更清晰(如果问题的受欢迎程度有任何迹象)。