gpt4 book ai didi

python - 为什么我不能使用 try/except block 将此 ConnectionError "ignore"?

转载 作者:太空宇宙 更新时间:2023-11-03 13:09:05 25 4
gpt4 key购买 nike

在我的 Django 项目中,我正在调用以提取一些数据。

我组织了下面的代码,这样如果 get 请求失败,它就会被忽略,其余的功能将继续(请不要讨论这是否是不好的做法)。

job_results=[]
try:
resp = requests.get(mongo_job_results)
for item in resp.json():
job_results.append(item)
except ConnectionError:
pass

我仍然收到以下错误:

Exception Type: ConnectionError
Exception Value:
('Connection aborted.', OSError(99, 'Cannot assign requested address'))

我在这里错过了什么?

最佳答案

您正在错过 Python 命名空间带来的乐趣。 requests 库有自己的类 requests.exceptions.ConnectionError ( http://docs.python-requests.org/en/master/api/#requests.ConnectionError )。此类的实例由 get 调用引发。

您在代码中引用的 ConnectionError 类是 python 内置的 ConnectionError ( https://docs.python.org/3.4/library/exceptions.html#ConnectionError )。

这两个不是同一个类,因此解释器最终不会执行 except block ,因为您没有捕获引发的类的实例。

要解决此问题,您需要执行 from requests.exceptions import ConnectionError,这将覆盖对模块命名空间的内置 ConnectionError 的引用。

另一种可能更简洁的选择是只捕获 requests.exceptions.ConnectionError - 这可以清楚地表明您打算捕获哪个连接错误类。

关于python - 为什么我不能使用 try/except block 将此 ConnectionError "ignore"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48370174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com