当上下文管理器内部出现异常时,是否会调用__exit__方法?

问题描述 投票:0回答:1

假设我们有一个名为 abc. 那么在下面的代码中是否有 __exit__方法在abc内部定义,如果出现异常就会被调用。

with abc:
    print("entered context manager")
    raise Exception("raising exception")


python-3.x contextmanager
1个回答
0
投票

是的,根据 文件. 该 __exit__ 方法接收异常作为参数。

object.__exit__(self, exc_type, exc_value, traceback)

退出与该对象相关的运行时上下文。参数描述了导致上下文被退出的异常。如果上下文是在没有异常的情况下退出的,那么三个参数都将是None。

这个问题 有更多的答案和信息。

这是第一个谷歌的结果,当我打入 python __exit__ exception.

© www.soinside.com 2019 - 2024. All rights reserved.