2012-09-19 61 views
0

代碼是這樣的:發生套接字錯誤時,如何從異常中獲取錯誤代碼?

import socket, sys 

try: 
    address = ('127.0.0.1', 31500) 
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
    s.connect(address) 
except Exception: 
    errType, errValue, errTraceback = sys.exc_info() 
    # or 
    # handle the Exception it throw out ? 

我想要得到的是像10060的ERRCODE這意味着connection time out,感謝您的幫助:)

+0

什麼是你的Python版本?爲什麼你使用'sys.exc_info()'而不是'例外,除了socket.timeout:'超時錯誤(注意:在這種情況下'.errno是None')? – jfs

+0

@JFSebastian 2.7.3 – Coaku

回答

2

使用

except EnvironmentError as e: 
    print e.errno 
+0

@nneonneo也許這不是我想要的,當我嘗試連接到套接字時,e.strerror是'連接被拒絕',應該有錯誤代碼'10061',但e.errno顯示'111 ',爲什麼? – Coaku

+0

你在Windows嗎? Errno 111在Linux上是ECONNREFUSED。錯誤編號是特定於操作系統的;如果您在Windows上運行,您只會看到10061。 – nneonneo

+0

@ Coaku(+1,這是要走的路。)如果你只想捕捉特定的情況,你可以使用[errno module](http://docs.python.org/library/errno.html# module-errno),以避免直接使用錯誤號碼。 –

相關問題