Python处理特定的错误代码?

Aus*_*inM 26 python sockets exception-handling exception

嘿,我想知道如何处理特定的错误代码.例如,[Errno 111] Connection refused

我想在套接字模块中捕获此特定错误并打印一些内容.

Utk*_*glu 37

如果你想获得错误代码,这似乎可以解决问题;

import errno

try:
    socket_connection()
except socket.error as error:
    if error.errno == errno.ECONNREFUSED:
        print(os.strerror(error.errno))
    else:
        raise
Run Code Online (Sandbox Code Playgroud)

您可以查找errno错误代码.

  • 在OSX上,"ECONNREFUSED"似乎是61而不是111,因此对值111进行硬编码对于可移植性来说是个坏主意. (6认同)
  • @AnatolyAlekseev我的意思是与`if`配对的`else`.所以else会在第一个缩进级别,_within_`outates`块. (2认同)
  • ```os.strerror(error.errno)``` 会将错误代码转换为消息字符串。即: ```os.strerror(104)``` 返回 '连接被对等方重置' (2认同)

jch*_*chl 27

至少在Unix平台上,您可以执行以下操作.

import socket, errno
try:
    # Do something...
except socket.error as e:
    if e.errno == errno.ECONNREFUSED:
        # Handle the exception...
    else:
        raise
Run Code Online (Sandbox Code Playgroud)

在Python 2.6之前,使用e.args[ 0 ]而不是e.errno.

  • 通常首选使用`e.errno`而不是`e.args [0]`(对于使用errnos的异常). (3认同)