我有这段代码:
try:
self.client.post(url, data, self.cookies, headers, auth, jsonrpc)
self.status = self.client.status
self.mytime = self.client.time
self.text = self.client.text
self.length = len(self.text)
except urllib2.URLError, error:
print error
self.exception = True
self.urrlib2 = True
if isinstance(error.reason, socket.timeout):
self.timeout = True
但有时我会像这样打印出异常:
URLError in POST > reason=The read operation timed out > <urlopen error The read operation timed out>
这些由except urllib2.URLError
处理。他们应该通过if isinstance(error.reason, socket.timeout)
测试,但他们没有。
所以我想知道{1}这个例外是什么。我怎么能这样做?
答案 0 :(得分:1)
type()
function返回对象的类型。
在这种情况下,您可以使用print type(error.reason)
来诊断对象reason
的类型。
答案 1 :(得分:0)
使用此:
import sys
try:
self.client.post(url, data, self.cookies, headers, auth, jsonrpc)
self.status = self.client.status
self.mytime = self.client.time
self.text = self.client.text
self.length = len(self.text)
except urllib2.URLError, error:
print error
self.exception = True
self.urrlib2 = True
errno, errstr = sys.exc_info()[:2]
if errno == socket.timeout:
print "There was a timeout"
self.timeout = True