在上下文管理器中捕获异常

问题描述 投票:0回答:1

试图了解如何捕获/处理上下文管理器的异常:

import contextlib
import urllib

with contxtlib.closing( urllib.request.urlopen(some_url) ) as resp:
    return resp.read()

我知道退出上下文管理器后,即使发生任何错误,上下文管理器也会关闭。对于上面的示例,鉴于closingurlopen异常位于上下文管理器中,我该如何捕获它们?我是否可以使用try ... except来捕获和处理closingurlopen的所有异常?

python python-3.x try-except contextmanager
1个回答
1
投票
contextlib.closing()上下文管理器调用close()方法。从docs中可以看出,您不必自己显式关闭它(将page替换为obj作为上下文):
© www.soinside.com 2019 - 2024. All rights reserved.