测试Python socket异常中特定的错误号码

2 投票
1 回答
1952 浏览
提问于 2025-04-16 15:45

我有一些Python代码,它和一个网络套接字绑定在一起。我会捕捉任何异常,以便我可以处理它们。根据不同的错误,我想做不同的事情。那么我怎么知道一个错误编号代表什么意思呢?

举个例子,我想做类似这样的事情:

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
   s.bind(('', 80))
except socket.error, ex
   (error_number, error_message) = ex
   if error_number==EADDRINUSE:
      print "You can't bind to that port -- someone else is using it"
   else:
      print "Unknown socket error"

但是我不知道哪个错误编号对应EADDRINUSE。在我的Ubuntu系统上,它是98,在运行OS X 10.5的Mac上是48,而在Windows XP上是10048。有没有什么地方可以找到这些信息在Python库里?

我明白这些数字不同是因为C语言层面的errno.h文件不同,但我不知道在Python中这些信息在哪里可以找到。同样,我也不认为错误信息会是一个特定的字符串。

另外,我不仅关心EADDRINUSE这个错误,我还想处理其他错误。

1 个回答

2

这些错误都是在标准库的 errno 模块中定义的。

撰写回答