Проверьте номер конкретной ошибки из исключения сокета Python - PullRequest
2 голосов
/ 14 апреля 2011

У меня есть некоторый код 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, на Mac с OS X 10.5 - 48, а на Windows XP - 10048. Есть ли место, где они включены в библиотеку Python?

Я понимаю,что цифры разные из-за различий в errno.h в слое C, но я не знаю, где они выставлены в python.Точно так же я предполагаю, что я не могу полагаться на сообщение об ошибке, являющееся определенной строкой.

Кроме того, я не просто обеспокоен EADDRINUSE - я хотел бы также покрыть другие ошибки.

1 Ответ

2 голосов
/ 14 апреля 2011

Все эти ошибки определены в модуле errno в стандартной библиотеке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...