嘿,我想知道如何处理特定的错误代码。例如,[Errno 111] Connection refused
我想在套接字模块中捕获此特定错误并打印一些内容。
答案 0 :(得分:35)
如果你想获得错误代码,这似乎可以解决问题;
import errno
try:
socket_connection()
except socket.error as error:
if error.errno == errno.ECONNREFUSED:
print(os.strerror(error.errno))
else:
raise
您可以查看errno
error codes。
答案 1 :(得分: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
。
答案 2 :(得分:0)
我在Windows上开发并发现自己陷入了同样的困境。但错误消息始终包含错误号。使用该信息我只是将异常转换为字符串str(Exception)
,将我想检查的错误代码转换为字符串str(socket.errno.ERRORX)
并检查错误代码是否在异常中。
连接重置例外的示例:
except Exception as errorMessage:
if str(socket.errno.ECONNRESET) in str(errorMessage):
print("Connection reset")
#etc...
这避免了特定于语言环境的解决方案,但遗憾的是它仍然不是平台独立的。
答案 3 :(得分:-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 ***
虽然很讨厌。