我在一个try语句块中有一个命令,我知道它会抛出异常。我试图在except语句块中捕获它,但是except语句似乎无法识别该异常的存在。当未被处理时(即没有包含在try语句块中),这个异常在交互式窗口中的样子如下:
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "C:\Users\Andy\software\Turkeys\actions.py", line 234, in annotate
annotation=annotator.ncbo_annotate(thing)
File "C:\Users\Andy\software\Turkeys\annotator.py", line 49, in ncbo_annotate
fh = urllib2.urlopen(submitUrl, postData)
File "C:\32Python27\lib\urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "C:\32Python27\lib\urllib2.py", line 406, in open
response = meth(req, response)
File "C:\32Python27\lib\urllib2.py", line 519, in http_response
'http', request, response, code, msg, hdrs)
File "C:\32Python27\lib\urllib2.py", line 444, in error
return self._call_chain(*args)
File "C:\32Python27\lib\urllib2.py", line 378, in _call_chain
result = func(*args)
File "C:\32Python27\lib\urllib2.py", line 527, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
HTTPError: HTTP Error 500: Internal Server Error
当我在列表的第一个文件"actions.py"中使用try/except结构来执行该命令时,代码如下:
try:
annotation=annotator.ncbo_annotate(thing)
except HTTPError:
...do some things with this
我本来期望上述从句可以捕获运行ncbo_annotate函数时产生的"HTTPError: HTTP Error 500: Internal Server Error",但是当我运行上述代码时,出现了一个错误,提示全局名称"HTTPError"未定义:Traceback (most recent call last):
File "<console>", line 1, in <module>
File "C:\Users\Andy\software\Turkeys\actions.py", line 235, in annotate
except HTTPError:
NameError: global name 'HTTPError' is not defined
那么问题来了,我记得Python在try语句块中找到一个异常处理器之前都会一直抛出异常,或者如果没有处理器就会将其抛出。为什么我的代码不知道HTTPError是什么,或者说,我该如何告诉它HTTPError是什么以便能够处理它呢?
request
жЁЎеқ—пјҢиҝҷдёӘж–№жі•д№ҹеҸҜд»ҘеңЁurllib.request
дёӯжүҫеҲ°гҖӮ - Max Candocia