首页 > 解决方案 > 从 finally 子句抛出异常

问题描述

我知道通常情况下,我们不应该期望从 finally 子句引发异常的状态,但是,我看到了可能发生这种情况的情况。

你对此有什么方法,你会在子句 中输入另一个try except嵌套吗?finally

这听起来有些奇怪......

标签: pythonpython-3.xexception

解决方案


我知道通常情况下,我们不应该期望从 finally 子句引发异常的状态,但是,我看到了可能发生这种情况的情况。

finally子句中包含可能引发错误的内容并不常见,但它当然是允许的。我建议您认为这对您的用例来说真的很有必要(当您的问题如此笼统时很难说)。

除了嵌套到 finally 子句之外,您会再尝试一次吗?

是的,这确实是处理它的唯一方法。例如可以这样处理:

try:
    maybe_error()
except SpecificError:
    handle_error()
finally:
    try:
        risky_close_resource()
    except OtherError:
        handle_other_error()
    finally:
        close_everything_without_risks()

推荐阅读