我想通过上下文管理器隐藏一些 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()
现在,据我所知,在调用yield时会执行with语句中的块。在我的情况下,如果出现异常,我会重新连接到mpd。我是否可以在重新连接后再次执行with块?
谢谢。