¿Puede alguien ayudarme en cómo puedo detectar este error?
import pygeoip gi = pygeoip.GeoIP('GeoIP.dat') print gi.country_code_by_name('specificdownload.com') Traceback (most recent call last): File "", line 14, in File "build\bdist.win-amd64\egg\pygeoip\__init__.py", line 447, in country_code_by_name addr = self._gethostbyname(hostname) File "build\bdist.win-amd64\egg\pygeoip\__init__.py", line 392, in _gethostbyname return socket.gethostbyname(hostname) gaierror: [Errno 11001] getaddrinfo failed
Bueno, preguntemos a Python qué tipo de excepción es:
#!/usr/bin/env python2.7 import pygeoip gi = pygeoip.GeoIP('GeoIP.dat') try: print gi.country_code_by_name('specificdownload.com') except Exception, e: print type(e) print e
Huellas dactilares:
$ ./foo.py [Errno 8] nodename nor servname provided, or not known
Así que necesitamos atrapar socket.gaierror
, así:
#!/usr/bin/env python2.7 import pygeoip import socket gi = pygeoip.GeoIP('GeoIP.dat') try: print gi.country_code_by_name('specificdownload.com') except socket.gaierror: print 'ignoring failed address lookup'
Aunque todavía queda la pregunta, ¿qué diablos es gaierror
? Google sube la documentación de socket.gaierror
, que dice,
Esta excepción se produce para errores relacionados con la dirección, para
getaddrinfo()
ygetnameinfo()
Entonces, error GAI = obtener error de información de dirección