Как обработать исключение сокета в python и продолжить выполнение скрипта? - PullRequest
0 голосов
/ 21 января 2020

Я пытаюсь получить статус возврата из списка доменов, используя сокет. Здесь, если сокет не может разрешить какой-либо случайный домен из-за какого-либо случая, он сам останавливает выполнение там и не рассматривает дальнейшее разрешение из списка

def getDate_andTime():
  return 'time'

def get_HostName(domainName):
    value = socket.gethostbyname_ex(domainName)
    try:
        if not str(value[0]).startswith("[Errno") and str(value[0] !=''):
            return True, value[0],getDate_andTime()
        elif str(value[0]).startswith("[Errno"):
            print("Value is not available")
            return False, value[0], getDate_andTime()
    except socket.gaierror as e:
        print("Error log", socket.gaierror)
    return False,e, getDate_andTime()


#Invoking the method
listofdomain=['abc.com','bcd.com','ade.com']
for domain in listofdomain:
    condition, value, time= get_HostName(domain)

Здесь, если «bcd.com» не разрешен, Сценарий останавливается без учета «ade.com», даже если я поймаю исключение.

Может ли кто-нибудь помочь с этим

1 Ответ

0 голосов
/ 21 января 2020

Вам нужно вывести sh оператор возврата внутри блока except. Область действия переменной исключения e находится только внутри блока исключения.

Пример:

def get_HostName(domainName):
    try:
        value = socket.gethostbyname_ex(domainName)
        if not str(value[0]).startswith("[Errno") and str(value[0] !=''):
            return True, value[0],getDate_andTime()
        elif str(value[0]).startswith("[Errno"):
            print("Value is not available")
            return False, value[0], getDate_andTime()
    except socket.gaierror as e:
        print("Error log", socket.gaierror)
        return False,e, getDate_andTime()
...