Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Network
  • » Анализ except типа 'socket.gaierror: [Errno 11004] getaddrinfo failed' [RSS Feed]

#1 Окт. 10, 2011 00:07:32

Gregor
От:
Зарегистрирован: 2011-10-03
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Анализ except типа 'socket.gaierror: [Errno 11004] getaddrinfo failed'

Здравствуйте, многоуважаемые питонеры!
Сгенерировано некое исключение, например, - 'socket.gaierror: getaddrinfo failed':
1) Каким образом можно получить строку в некую переменную?
2) Есть ли механизм явного получения номера ошибки?
Спасибо всем!



Офлайн

#2 Окт. 10, 2011 00:54:45

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Анализ except типа 'socket.gaierror: [Errno 11004] getaddrinfo failed'

1. Это как так? В Python переменные не типизированы, так что могут быть строками, без дополнительных манипуляций.
2. Зависит от типа ошибки. Исключения те же объекты, они могут определять или нет те или иные атрибуты.

a. Берём код и читаем его, никто от вас ничего не прячет.
b. >>> help(socket.gaierror)
c. Ну RTFM, если уж ничего не помогает :-).

..bw



Офлайн

#3 Окт. 10, 2011 04:11:55

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9716
Репутация: +  842  -
Профиль   Отправить e-mail  

Анализ except типа 'socket.gaierror: [Errno 11004] getaddrinfo failed'

>>> import socket
>>> try:
... socket.gethostbyname('abc')
... except socket.gaierror as e:
... print(e)
... print(e.errno)
...
[Errno -2] Name or service not known
-2
>>>



Офлайн

#4 Окт. 10, 2011 08:27:17

Gregor
От:
Зарегистрирован: 2011-10-03
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Анализ except типа 'socket.gaierror: [Errno 11004] getaddrinfo failed'

“Зависит от типа ошибки. Исключения те же объекты, они могут определять или нет те или иные атрибуты ”, вкупе со ссылкой - буду “переваривать”. Спасибо!



Офлайн

#5 Окт. 10, 2011 09:05:36

Gregor
От:
Зарегистрирован: 2011-10-03
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Анализ except типа 'socket.gaierror: [Errno 11004] getaddrinfo failed'

py.user.next
>>> import socket
>>> try:
... socket.gethostbyname('abc')
... except socket.gaierror as e:
... print(e)
... print(e.errno)
...
[Errno -2] Name or service not known
-2
>>>
# ****************************************
Отличный пример, - то что хотел. Экспериментируя, я мастерил такие конструкции, кажется, однако до предложения с ключевым словом “as” не дошел, и, видимо дело в этом… Буду изучать. Спасибо большое!
И ещё…
У меня после прогона скрипта результат был таким:
getaddrinfo failed
11001
а у Вас:
Name or service not known
-2
…это с чем связано?



Офлайн

#6 Окт. 10, 2011 09:10:19

Gregor
От:
Зарегистрирован: 2011-10-03
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Анализ except типа 'socket.gaierror: [Errno 11004] getaddrinfo failed'

Кстати, для начинающих, - нашел замечательную статью “Как изучать объекты Python” по ссылке http://citforum.ru/programming/python/introspec.shtml. Надеюсь, что вопросы после этой статьи будут более осмысленными и более сложными ;)



Офлайн

#7 Окт. 10, 2011 09:34:23

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Анализ except типа 'socket.gaierror: [Errno 11004] getaddrinfo failed'

Тоже надеюсь, а то школота задрала уже, не знают основных принципов профессиональных инженеров: тыкай на все кнопки подряд, должно заработать :-).
Я в подобных случаях (объект непонятного происхождения) dir'ю его и включаю воображение (консоль с дополнением всегда под рукой, например PyShell). Если воображение подводит, смотрю первоисточник. Кстати, отдельные экземпляры ошибок, даже имея один класс, могут различаться по набору атрибутов, например, этим грешит urllib2.URLError/HTTPError.

..bw



Офлайн

#8 Окт. 10, 2011 10:19:27

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9716
Репутация: +  842  -
Профиль   Отправить e-mail  

Анализ except типа 'socket.gaierror: [Errno 11004] getaddrinfo failed'

Gregor
это с чем связано?
возможно, различия в реализации в линукс и уиндоус



Офлайн

#9 Окт. 10, 2011 10:26:45

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Анализ except типа 'socket.gaierror: [Errno 11004] getaddrinfo failed'

> возможно, различия в реализации в линукс и уиндоус

>>> socket.gethostbyname('abc')
Traceback (most recent call last):
...
gaierror: [Errno -5] С именем хоста не связано ни одного адреса
>>> socket.getaddrinfo('abc', -1)
Traceback (most recent call last):
...
gaierror: [Errno -8] Servname не поддерживается для ai_socktype
>>> socket.getaddrinfo('abc', 9999) # или 80
Traceback (most recent call last):
...
gaierror: [Errno -2] Имя или служба не известны
Debian 6.0 Squeeze (Linux 2.6.32-5-amd64)

Можно диссертацию писать :-).

..bw



Отредактировано (Окт. 10, 2011 10:28:22)

Офлайн

  • Начало
  • » Network
  • » Анализ except типа 'socket.gaierror: [Errno 11004] getaddrinfo failed'[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version