我有一些代码会进行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的重复 - 我的目标是一整类相关的异常(并且如果其他东西引发异常则允许崩溃,在我的情况下会是一个错误)< / p>
答案 0 :(得分:2)
好的图书馆设计师通常为他们的图书馆创建一个基本例外,从中可以得到其他例外。
对于requests
,根据您链接的documentation,这是RequestException
;在except
子句中使用它将捕获从中派生的任何内容。
try:
# code involving requests
# that might err
except RequestException:
# ignore, handle..
如评论和问题中所述,基于他们所定义的模块进行区分不能自动(即在except
子句表达式中;你&#39; d必须在except
子句的主体中添加该逻辑。