【发布时间】:2016-07-17 16:26:54
【问题描述】:
我正在尝试使用上下文管理器隐藏一些 try/except 复杂性。这是一个简单的例子:
from contextlib import contextmanager
import mpd
mpdclient = mpd.MPDClient()
mpdclient.connect("localhost", 6600)
@contextmanager
def mpdcontext():
try:
yield
except mpd.ConnectionError:
mpdclient.connect("localhost", 6600)
with mpdcontext():
mpdclient.status()
with mpdcontext():
mpdclient.lsinfo()
现在,据我了解,with 语句中的块是在调用 yield 时执行的。就我而言,如果这引发异常,我会重新连接到 mpd。重新连接后,我可以以某种方式再次执行 with-block 吗?
谢谢
【问题讨论】:
标签: python yield contextmanager mpd