Python Glossary English

все Python 3socketисключение

socket.gaierror

исключения

Ошибка разрешения адреса из getaddrinfo() и getnameinfo(): имя не найдено, DNS недоступен, семейство не поддерживается.

Синтаксис

except socket.gaierror as e: ...

Подкласс OSError, но не ConnectionError: «не удалось узнать адрес» — совсем другая беда, чем «сервер отказал», и обработчик ConnectionError её не поймает. errno у неё — код EAI_*, в Linux отрицательный (-2 для «имя не найдено»), а в macOS другой, поэтому сравнивают с константами socket.EAI_NONAME и подобными, а не с числами.

Примеры

import socket
try:
    socket.getaddrinfo('not-an-ip', 80, flags=socket.AI_NUMERICHOST)
except socket.gaierror as e:
    print(e.errno == socket.EAI_NONAME)  # → True
    print(isinstance(e, OSError), isinstance(e, ConnectionError))  # → True False

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности