在我创建的脚本中,我将大量数据发布到REST API。
脚本非常模块化,在某个地方的顶级我正在捕获URLError。我需要知道响应正文中的内容,因为那里会有一条错误消息。
我可以使用URLError的方法吗?
try:
(calling some function that throws URLError)
except urllib2.URLError, e:
print "Error: " + str(e.body_or_something)
答案 0 :(得分:2)
是的。您可以通过e.readlines()
try:
(calling some function that throws URLError)
except urllib2.URLError, e:
print e.readlines()
答案 1 :(得分:0)
请参阅documenet:https://docs.python.org/2/library/urllib2.html#urllib2.URLError
exception urllib2.URLError 处理程序引发此异常(或 当它们遇到问题时导出的异常。它是的子类 IO错误。
原因此错误的原因。它可以是消息字符串或 另一个异常实例(远程URL的socket.error,OSError for 本地网址)。
例外urllib2.HTTPError 虽然是一个例外(一个子类) URLError),HTTPError也可以作为非异常 类似文件的返回值(与urlopen()返回的相同)。这个 在处理异常HTTP错误(例如请求)时非常有用 认证
code RFC 2616中定义的HTTP状态代码。此数值 对应于在中找到的代码字典中找到的值 BaseHTTPServer.BaseHTTPRequestHandler.responses。
原因此错误的原因。它可以是消息字符串或 另一个异常实例。
因此,当请求引发 urllib2.HTTPError 时,您可以访问响应正文。
试试这个:
try:
(calling some function that throws URLError)
except urllib2.HTTPError as e:
body = e.readlines()
print e.code, e.reason, body
except urllib2.URLError as e:
print e.reason
except:
sys.excepthook(*sys.exc_info())