在ContextManager中捕获异常?

时间:2018-10-30 14:23:12

标签: python contextmanager

是否可以在上下文管理器中捕获异常?

背景:方法get_data_from_remote_system()每五分钟连接到一个远程系统并获取数据。

有时候网络掉线了。

我想在30分钟内禁止显示异常消息。 30分钟后,我想看到异常。

我不想捕获所有异常。一些。在这种情况下,socket.timeout

是否有一种方法可以编写实现此目的的联系人管理器,并且此上下文管理器的最终用法如下所示?

with suppress_exception(exceptions=[socket.timeout], minutes=30):
    get_data_from_remote_system()

1 个答案:

答案 0 :(得分:0)

是的,我不知道如果您在default_create中返回True,则不会引发该异常。

现在__exit__()上下文管理器很简单:

suppress_exception()