2011-01-30 237 views
3

你好,我有问题。我使用机械化,python 2.7来连接一些站点(代码现在不重要),我有站点列表,我现在连接到他们。当它发生的部位从我的名单并不存在,我得到错误:如何处理“getaddrinfo失败”?

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) 

但它只是不想w扫。

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

+3

什么是“不想工作”是什么意思?他们呼吁生病吗?后追踪。 – SilentGhost 2011-01-30 18:32:42

+0

@SilentGhost我认为它的意思是“不捕捉”,但即使如此,“例外:除外”都可以工作。 Python的问题? – new123456 2011-01-30 18:34:59

回答

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的错误)相比,您会遇到更严重的问题。

6

随机猜测,但尝试:

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]