我有一个脚本打印出来自API的响应,但我似乎无法捕获任何异常。我想,在没有任何运气的情况下,我已经完成了关于这个主题的每一个问题。
如何检查脚本是否会捕获任何错误/异常?
我在我知道返回403 Forbidden的网站上测试脚本,但它确实没有显示。
我的剧本:
import urllib2
url_se = 'http://www.example.com'
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'API to File')]
try:
request = opener.open(url_se)
except urllib2.HTTPError, e:
print e.code
except urllib2.URLError, e:
print e.args
except Exception:
import traceback
print 'Generic exception ' + traceback.format_exc()
response = request.read()
print response
这是正确的做法吗?什么是捕捉关于
的exeptions的最佳做法urllib2
答案 0 :(得分:0)
您的计划中存在错误。如果try块中发生任何异常,则变量request
在undefined
块中变为response = request.text()
将其更正为
import urllib2
url_se = 'http://www.example.com'
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'API to File')]
try:
request = opener.open(url_se)
response = request.read()
print response
except urllib2.HTTPError, e:
print e.code
except urllib2.URLError, e:
print e.args
except Exception as e:
import traceback
print 'Generic exception ' + traceback.format_exc()
在您的计算机上测试它肯定会看到例外情况。
单独捕获异常只有在您使用它们执行某些操作时才有意义,否则如果您只想记录异常,则通用except
块将完成此任务。