Python如何处理特定错误代码?

28 投票
5 回答
65230 浏览
提问于 2025-04-16 12:47

你好,我想知道怎么处理一些特定的错误代码。例如,[Errno 111] 连接被拒绝

我想在使用socket模块的时候,捕捉到这个特定的错误,并打印一些信息。

5 个回答

1

这看起来很难做到,而且不太稳定/可移植,但也许可以试试这样的方式:

import socket

try:
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect(('localhost', 4167))
except socket.error, e:
    if 'Connection refused' in e:
        print '*** Connection refused ***'

这样可以得到:

$ python socketexception.py 
*** Connection refused ***

不过效果不是很好。

27

在Unix系统上,你可以这样做。

import socket, errno
try:
    # Do something...
except socket.error as e:
    if e.errno == errno.ECONNREFUSED:
        # Handle the exception...
    else:
        raise

在Python 2.6之前,使用 e.args[ 0 ] 来代替 e.errno

41

如果你想获取错误代码,这个方法似乎有效;

import errno

try:
    socket_connection()
except socket.error as error:
    if error.errno == errno.ECONNREFUSED:
        print(os.strerror(error.errno))
    else:
        raise

你可以查阅errno错误代码

撰写回答