为什么在Python中使用try/except结构中的else?

amp*_*ent 9 python exception-handling try-catch

我正在学习Python并偶然发现了一个我不能轻易消化的概念:构造中的可选elsetry.

根据文件:

try ... except语句有一个可选的else子句,当存在时,必须遵循所有except子句.如果try子句不引发异常,则必须执行的代码很有用.

我感到困惑的是,如果try子句没有在try构造中引发异常,为什么必须执行代码 - 为什么不简单地让它遵循try/except在相同的缩进级别?我认为这将简化异常处理的选项.或者另一种问题是,else如果它只是跟随try语句而独立于它,那么块中的代码将会做什么.也许我错过了什么,请赐教.

这个问题有点类似于这个,但我找不到我想要的东西.

use*_*ica 13

else只有当代码中的代码try没有引发异常时才会执行该块; 如果你把代码放在else块之外,它就会发生,无论例外情况如何.而且,它发生在之前finally,这通常很重要.

当您有一个可能出错的简短设置或验证部分时,这通常很有用,然后是您使用您设置的资源的块,其中您不想隐藏错误.您不能将代码放入,try因为except当您希望它们传播时,错误可能会转到子句.你不能把它放在构造之外,因为那里的资源肯定不可用,因为安装失败或者因为finally一切都失败了.因此,你有一个else块.

  • 对.通常的做法是将它放在其他语言的`try`中,特别是如果没有`except`块,但在Python中,我们有`else`,所以我们使用它. (2认同)