Как продолжить функцию библиотеки запросов после получения ошибки, используя python? - PullRequest
0 голосов
/ 12 апреля 2020

Я хочу написать функцию error_handler с python

def error_handler(url_list1):
  try:
    resp = requests.get(url_list1, headers = HEADERS, timeout = 3)
    resp.raise_for_status()

  except requests.exceptions.HTTPError as errh:
    print ("Http Error:",errh)

  except requests.exceptions.ConnectionError as errc:
    print ("Error Connecting:",errc)

  except requests.exceptions.Timeout as errt:
    print ("Timeout Error:",errt)

  except requests.exceptions.RequestException as err:
    print ("Ops: Something Else Wrong!",err)

  return resp

Я хочу, чтобы этот код продолжал работать после того, как он обнаружил ошибку, но UnboundLocalError: local variable 'resp' referenced before assignment Я принял эту ошибку, и я не могу понять ее вне (извините за мой плохой английский sh)

1 Ответ

0 голосов
/ 12 апреля 2020

Если ваш код потерпел неудачу в блоке try, переменная resp в возврате не присваивается. Чтобы он работал, вы должны поместить инструкцию return в блок try.

def error_handler(url_list1):
  try:
    resp = requests.get(url_list1, headers = HEADERS, timeout = 3)
    resp.raise_for_status()
    return resp

  except requests.exceptions.HTTPError as errh:
    print ("Http Error:",errh)

  except requests.exceptions.ConnectionError as errc:
    print ("Error Connecting:",errc)

  except requests.exceptions.Timeout as errt:
    print ("Timeout Error:",errt)

  except requests.exceptions.RequestException as err:
    print ("Ops: Something Else Wrong!",err)

Это решит текущую проблему. Я не знаю, последуют ли другие.

...