【发布时间】:2019-09-16 19:35:18
【问题描述】:
我正在尝试理解 Python 的 try-except 构造。它似乎很复杂,因为它有可选的finally 和else 子句。此外,其中可能涉及return、break、continue。您可以决定命名或不命名您捕获的异常等...
无论如何,我想我现在很好地理解了控制流程,但这里引用了 Python 文档中的一段话,我觉得这是错误的。
以下几点讨论发生异常时更复杂的情况:
如果在 try 子句执行过程中发生异常,该异常可以由 except 子句处理。在所有情况下,都会在 finally 子句执行后重新引发异常。
引用来自https://docs.python.org/3/tutorial/errors.html
第 8.6 点
最后一句话似乎不对。他们是什么意思?似乎完全错误。我的测试表明,如果您捕获并处理它(当然),则不会重新引发异常。那么......来自文档的注释是什么意思?
谁能解释一下?
编辑: 在我提出这个问题后,似乎有人修复了文档页面。是这样吗?
【问题讨论】:
-
参见“一个更复杂的例子:”下面几行,它演示了这个案例。
-
@Barmar 但是这个例子并不是“在所有情况下”,它只是在你没有捕捉到正确的异常类型的情况下。
-
是的,我没有仔细阅读示例。
-
我怀疑它应该读作“在所有其他情况下”。
-
@chepner 伟大的思想都一样,我只是写了与答案评论相同的东西。
标签: python python-3.x