Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 发生套接字错误时,如何从异常中获取其错误代码?_Python_Sockets_Exception_Error Handling_Error Code - Fatal编程技术网

Python 发生套接字错误时,如何从异常中获取其错误代码?

Python 发生套接字错误时,如何从异常中获取其错误代码?,python,sockets,exception,error-handling,error-code,Python,Sockets,Exception,Error Handling,Error Code,代码如下: 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

代码如下:

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
的错误代码,这意味着
连接超时
,感谢您的帮助:)

使用

except EnvironmentError as e:
    print e.errno

@nneonneo也许这不是我想要的,当我尝试连接到套接字时,e.strerror是“连接被拒绝”,其错误代码应为“10061”,但e.errno显示“111”,为什么?您在Windows上吗?Errno 111在Linux上被重新编译。错误号是特定于操作系统的;如果您在Windows上运行,则只能看到10061。@Coaku(+1,这是正确的方法。)如果您只想捕获特定情况,则可以使用避免直接处理错误号。@J.F.Sebastian:这很有意义,因为它不一定与特定的错误号相关联。但是,幸运的是,您可以在
Exception Environment Error
@nneonneo HA上方使用
Exception socket.timeout
单独处理它,谢谢,但是当我尝试连接到一个错误的域时,e.errno可能是负数,如“-5”,errno不应该在0到256之间吗?您的Python版本是什么?为什么要使用
sys.exc_info()
而不是例如
而不是socket.timeout:
来表示超时错误(注意:
。在这种情况下,errno是None
)?