Python 请求 - 异常类型:ConnectionError - 尝试:除了不起作用

Posted

技术标签:

【中文标题】Python 请求 - 异常类型:ConnectionError - 尝试:除了不起作用【英文标题】:Python requests - Exception Type: ConnectionError - try: except does not work 【发布时间】:2014-02-19 20:14:18 【问题描述】:

我正在使用 web 服务来检索一些数据,但有时 url 不起作用并且我的网站没有加载。您知道我如何处理以下异常,以便网站在 web 服务不工作的情况下没有问题吗?

Django Version: 1.3.1 
Exception Type: ConnectionError
Exception Value: 
HTTPConnectionPool(host='test.com', port=8580): Max retries exceeded with url:

我用过

try:
   r = requests.get("http://test.com", timeout=0.001)
except requests.exceptions.RequestException as e:    # This is the correct syntax
   print e
   sys.exit(1)

但什么也没发生

【问题讨论】:

我不确定,但不应该是except requests.exceptions.RequestException, e:吗?你也说你有ConnectionError 作为一个例外,但我没有看到你捕捉到这个特定的例外...... 好吧,因为我是 python 新手,所以我从这里找到了答案:***.com/questions/16511337/… 【参考方案1】:

你不应该退出你的工作实例sys.exit(1) 此外,您遇到了错误的错误。

例如,您可以做的是:

from requests.exceptions import ConnectionError
try:
   r = requests.get("http://example.com", timeout=0.001)
except ConnectionError as e:    # This is the correct syntax
   print e
   r = "No response"

在这种情况下,您的程序将继续,设置 r 的值,这通常会将响应保存为任何默认值

【讨论】:

抱歉没有看到你发现了错误的错误:你得到了一个 ConnectionError,所以你需要抓住这个(见编辑的答案) 有效!非常感谢!但我用除了 requests.exceptions.ConnectionError 作为 e: ConnectionError 也是一个内置错误类型的名称——当他们有如此可怕的命名习惯时,这怎么能成为一个广泛使用的包? str 和 repr 都没有表明该类不是内置类。它甚至没有从内置的 ConnectionError 继承,而是从 OSError 继承(真正的内置也是如此)。

以上是关于Python 请求 - 异常类型:ConnectionError - 尝试:除了不起作用的主要内容,如果未能解决你的问题,请参考以下文章

尽管文件已上传,但 Python pysftp.put 引发“没有此类文件”异常

Python异常类型

python 常见的异常类型

Python常见异常类型

Python常见异常类型

Python自动化运维之异常处理