我正在尝试使用上下文管理器隐藏一些尝试/排除复杂性。这是一个简单的例子:
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 吗?
谢谢