все 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Сообщить о неточности