相关疑难解决方法(0)

python如何在上下文管理器中安全地处理异常

我想我已经读过内部异常,with不允许__exit__正确调用.如果我在这个笔记上错了,请原谅我的无知.

所以我在这里有一些伪代码,我的目标是使用锁定上下文,在__enter__记录开始日期时间并返回锁定ID,并在__exit__记录结束日期时间并释放锁定:

def main():
    raise Exception

with cron.lock() as lockid:
    print('Got lock: %i' % lockid)
    main()
Run Code Online (Sandbox Code Playgroud)

除了安全地存在上下文之外,我怎么还能引发错误?

注意:我故意在此伪代码中引发基本异常,因为我想在任何异常时安全退出,而不仅仅是预期的异常.

注意:替代/标准并发防止方法是无关紧要的,我想将这些知识应用于任何一般的上下文管理.我不知道不同的背景是否有不同的怪癖.

PS.该finally块是否相关?

python exception-handling contextmanager

16
推荐指数
2
解决办法
1万
查看次数