4

你好,我有问题。我使用 mechanize,python 2.7 连接一些站点(代码现在不重要)我有站点列表,我现在连接到它们。当它发生时,我列表中的站点不存在,我得到错误:

urllib2.URLError: [Errno 11004] getaddrinfo 失败

我试图通过这样做来处理它:

             except mechanize.URLError, e:
                    result = str(e.reason)

或者

             except urllib2.URLError, e:
                    result = str(e.reason)

甚至

             except Exception, e:
                    result = str(e)

但它只是不想工作。

如何解决这个问题?发生此错误时,我只想打印“连接失败”之类的内容并移至列表中的下一个地址。如何捕获此错误except

4

2 回答 2

9

随机猜测但尝试:

import socket

try:
   ...
except socket.gaierror:
   pass

socket.gaierror"[Errno 11004] getaddrinfo failed"错误。

如果你这样做,你可以很容易地找出异常

try:
    ...
except:
    import sys
    # prints `type(e), e` where `e` is the last exception
    print sys.exc_info()[:2]
于 2011-01-30T19:21:54.137 回答
3

做就是了

except urrlib2.URLError:
    print "Connection failed"
    continue # NOTE: This assumes this is in a loop. If not, substitute for return

大多数 Python 库都会在错误报告中告诉您异常的类型,在这种情况下urllib2.URLError,这确实是您想要except的。

但是,如果except Exception:对您不起作用,那么您会遇到比用户输入错误网址更严重的问题(假设这不是 urllib2 的错)。

于 2011-01-30T18:29:55.530 回答