如何处理“getaddrinfo失败”?

时间:2011-01-30 18:24:58

标签: python urllib2 urllib urlopen

你好,我有问题。我使用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捕获此错误?

2 个答案:

答案 0 :(得分:7)

随机猜测,但尝试:

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]

答案 1 :(得分:2)

只做

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的错误)。