如何处理“getaddrinfo失败”?

2024-04-29 16:53:26 发布

您现在位置:Python中文网/ 问答频道 /正文

喂,我有问题。我使用mechanize,Python2.7来连接一些站点(代码现在不重要),我有一个站点列表,现在我已经逐个连接到它们了。当我的列表中的站点不存在时,我会得到错误:

urllib2.URLError: [Errno 11004] getaddrinfo failed

我试着这样做来处理:

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

或者

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

甚至

             except Exception, e:
                    result = str(e)

但它就是不想工作。

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


Tags: 代码列表站点错误resulturllib2reasonmechanize
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的错误)。

随机猜测,但尝试:

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]

相关问题 更多 >