不能用urllib2捕获exeptions

时间:2017-10-30 09:31:45

标签: python python-2.7 exception exception-handling urllib2

我有一个脚本打印出来自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

1 个答案:

答案 0 :(得分:0)

您的计划中存在错误。如果try块中发生任何异常,则变量requestundefined块中变为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块将完成此任务。