无法使用 urllib2 捕获异常

Cant catch exeptions with urllib2

我有一个脚本打印出 API 的响应,但我似乎无法捕捉到任何异常。我想我已经通过了关于这个主题的所有问题,但没有任何运气。

如何检查脚本是否会捕获任何 errors/exceptions?

我正在一个我知道的网站上测试脚本 returns 403 禁止,但它不显示。

我的脚本:

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

这是正确的方法吗?捕获有关

的异常的最佳做法是什么
urllib2

您的程序中存在错误。如果 try 块中发生任何异常,则变量 requestresponse = request.text() 块中变为 undefined
将其更正为

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 块将完成这项工作。