2

私はこのコードを持っています:

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)テストに合格するはずですが、そうではありません。

instanceだから私はこの例外が何であるか知りたいです。これどうやってするの?

4

2 に答える 2

1

このtype()関数は、オブジェクトの型を返します。

print type(error.reason)この場合、オブジェクトのタイプを診断するために使用できますreason

于 2013-01-16T09:17:48.260 に答える
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
于 2013-01-16T09:45:35.687 に答える