【发布时间】:2014-06-08 19:05:45
【问题描述】:
以下是相关代码:
@contextlib.contextmanager
def make_temp_dir():
temp_dir = tempfile.mkdtemp()
yield temp_dir
shutil.rmtree(temp_dir)
with make_temp_dir(listing_id) as tmpdir:
pass
# Sometimes something in here throws an exception that gets caught higher up
好的,写完这一切,我现在明白发生了什么。我正在使用装饰器创建的上下文管理器中的 exit 方法 正在运行,但这当然不会将流返回到我的生成器。
那么应该我该怎么做呢?
【问题讨论】:
-
如果想在上下文管理器中捕获异常,需要照常写一个
try/except。见this question。
标签: python with-statement contextmanager