Python 2.7:无法捕获异常

时间:2013-10-06 17:50:57

标签: python exception python-2.7 try-except

我有以下代码:

def distributeMembersFile(members):
    for node in members:
        node = node.strip() # Strip trailing \n
        if node == socket.hostname(): # No need to send the file to itself
            continue
        conn = None
        try:
            s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
            s.connect((node, port))
            # TODO: Can possibly update the list of members here as well
            s.sendall('DWLD')
            s.recv(4)
        except socket.error, msg:
            logging.info(msg)
        finally:
            if s:
                s.close()

现在,我的问题是,即使s.connect()在try.error块之外的try中,也不会捕获该异常。我在控制台上看到以下回溯:

    s.connect((node, port))
  File "<string>", line 1, in connect
error: (111, 'Connection refused')

有趣的是,在其他地方我有相同的尝试,除了socket.error块,并且这个特定的(连接被拒绝)错误被捕获为:

INFO (111, 'Connection refused')

上面是由除了block之外的logging.info函数打印的。我现在看到捕捉这个例外的唯一方法是使用'裸'除外,这不是一件好事。另外,我发现控制台上的错误没有显示为

  

socket.error:(111,'拒绝连接')

相反,它只是说

error: (111. 'Connection refused') 

缺少前导词'socket'。可能是什么原因导致异常没有被捕获?

0 个答案:

没有答案