您好我有以下代码:
httpClient=AsyncHTTPClient()
try:
response=yield httpClient.fetch("http://ww.bbc.co.uk/news/uk-000")
except Exception as e:
print(e)
我故意提取无效的网址以确定如何处理错误。有了以上我得到:
[Errno 8] nodename nor servname provided, or not known
但是我试图弄清楚这是什么异常类,所以我做了以下几点:
httpClient=AsyncHTTPClient()
try:
response=yield httpClient.fetch("http://ww.bbc.co.uk/news/uk-000")
except Exception as e:
print(type(e))
我得到了:
socket.gaierror: [Errno 8] nodename nor servname provided, or not known
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/tornado-4.1-py3.4-macosx-10.6-intel.egg/tornado/gen.py", line 810, in run
yielded = self.gen.throw(*sys.exc_info())
File "messages.py", line 230, in on_message
print(type(e))
TypeError: 'str' object is not callable
首先,我不明白为什么此代码中的类型(e)不能告诉我这是什么类型的Exception类?
其次,龙卷风文档说明抛出了HTTPError,但它看起来并不像是否会覆盖所有可以抛出的异常。
由于
答案 0 :(得分:2)
您是否有另一个名为type
的变量正在隐藏内置函数type
?
文档声明当服务器返回非200响应代码时会引发HTTPError
,但如果我们没有这么做,那么可能会引发其他异常。这个是socket.gaierror
,但对可能引发的内容没有限制,因此您必须使用except Exception
来捕获所有内容。