【发布时间】:2019-01-03 20:47:42
【问题描述】:
我有以下代码
from contextlib import contextmanager
@contextmanager
def simple_context_manager():
print("starting context manager")
yield
print("finished context manager")
try:
with simple_context_manager():
raise RuntimeError
except RuntimeError:
print("Caught the error")
print("Moving on")
现在打印出来了
starting context manager
Caught the error
Moving on
这告诉我上下文管理器没有关闭。 如何让它关闭并打印“完成的上下文管理器”行?
由于我使用的是装饰器,我没有专用的__exit__ 函数,我认为应该根据this 调用。
所以我不确定如何让我的上下文管理器在其上下文中发生错误的情况下退出。
【问题讨论】:
标签: python python-3.x error-handling contextmanager