我正在学习 Python,并且偶然发现了一个我无法轻易理解的概念:try
构造中的可选 else
block 。
根据 the documentation :
The try ... except statement has an optional else clause, which, when present, must follow all except clauses. It is useful for code that must be executed if the try clause does not raise an exception.
我感到困惑的是,为什么在 try 构造中有如果 try 子句没有引发异常则必须执行的代码——为什么不简单地让它跟随 try/except at相同的缩进级别?我认为这会简化异常处理的选项。或者另一种询问方式是 else
block 中的代码会做什么,如果它只是跟在 try 语句之后,独立于它就不会完成。也许我遗漏了什么,请赐教。
这个问题有点类似于this one但我在那里找不到我要找的东西。
最佳答案
else
block 只有在 try
中的代码没有引发异常时才会执行;如果您将代码放在 else
block 之外,它就会发生而不管异常。此外,它发生在 finally
之前,这通常很重要。
当您有一个可能出错的简短设置或验证部分,然后是您使用您设置的资源但不想在其中隐藏错误的 block 时,这通常很有用。您不能将代码放在 try
中,因为当您希望它们传播时,错误可能会转到 except
子句。你不能把它放在构造之外,因为那里肯定没有资源,要么是因为设置失败,要么是因为 finally
把所有东西都拆掉了。因此,您有一个 else
block 。
关于python - 为什么在 Python 的 try/except 构造中使用 else?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18387582/