【发布时间】:2017-08-16 04:46:22
【问题描述】:
我有一些代码可以进行requests.get() 调用,这可能会以各种方式失败。我想捕获requests 异常,但不关心调用失败的原因。
我想避免这样的代码
try:
r = requests.get(url)
except:
pass
因为它可能会捕获与requests 无关的异常(在上述情况下几乎不会出现这种情况,但如果有更多代码则可能)。
requests 例外是documented,但我不想列出所有这些。 有没有办法全部捕获它们,在 requests 异常上使用某种通配符?(更一般地说 - 对于模块提供的异常)
我也可以选择类似的东西
try:
r = requests.get(url)
except Exception as e:
print(e)
但我想避免分析 e 以过滤掉 requests 异常。
注意:这不是 question on handling all but one exception 的重复项 - 我的目标是一整类相关异常(如果其他情况引发异常,则允许崩溃,在我的情况下这将是一个错误)
【问题讨论】:
-
对于
requests,您始终可以使用RequestsException,所有这些都继承自我所看到的。您不能处理可能仅在同一模块中定义的异常(您可以全部捕获并过滤掉except子句中的内容,但这可能会变得混乱)。 -
@Marat:这不是重复的——我想捕获一整类相关异常,而不是“捕获除一个之外的所有异常”(我只会链接两个
except实例) -
@JimFasarakisHilliard:谢谢,您的 cmets 涵盖了
request案例(我的直接问题)和一般案例(= 它无法完成,除了我在问题中提到的过滤)。你介意把它变成一个答案,以便我接受吗?
标签: python python-3.x exception exception-handling python-requests