python - 使用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
我遇到了这个错误,但我无法弄清楚。
解决方案
如果您的代码在 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)
这将解决当前的问题。不知道其他人会不会跟风。
推荐阅读
- reactjs - 在 React Native 中只调用一次服务
- django - 如何在 django 中实现复选框
- dynamics-crm - 为什么业务规则不起作用,但 javascript 可以使字段在 Dynamics-365 中只读?
- jquery - 未找到 jScroll.js nextSelector - 正在销毁
- delphi - 使 Delphi 应用程序在特定桌面上启动
- java - 无法解决符号标注设计ActivityCompat v7
- python - 有没有办法检查套接字是否仍在运行?
- java - 如何使用tomcat分别配置应用服务器和web服务器?
- c# - Avro 架构 GenericRecord 缺少键
- php - 如何在 foreach 循环中使用数组值创建动态变量