首页 > 解决方案 > 使用python收到错误后如何继续请求库功能?

问题描述

我想用python写一个error_handler函数

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 我遇到了这个错误,但我无法弄清楚。

标签: pythonpython-3.xweb-scrapingerror-handlingpython-requests

解决方案


如果您的代码在 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)

这将解决当前的问题。不知道其他人会不会跟风。


推荐阅读