假设我们有一个名为 abc. 那么在下面的代码中是否有 __exit__方法在abc内部定义,如果出现异常就会被调用。
abc
__exit__
with abc: print("entered context manager") raise Exception("raising exception")
是的,根据 文件. 该 __exit__ 方法接收异常作为参数。
object.__exit__(self, exc_type, exc_value, traceback)退出与该对象相关的运行时上下文。参数描述了导致上下文被退出的异常。如果上下文是在没有异常的情况下退出的,那么三个参数都将是None。
object.__exit__(self, exc_type, exc_value, traceback)
退出与该对象相关的运行时上下文。参数描述了导致上下文被退出的异常。如果上下文是在没有异常的情况下退出的,那么三个参数都将是None。
这个问题 有更多的答案和信息。
这是第一个谷歌的结果,当我打入 python __exit__ exception.
python __exit__ exception