团队博客: CSDN AI小组
2021/09/12,踩坑日记(一):
首先,我们来看一段代码:
def request_create_commnuity(self, url, param):
fails = 0
while True:
try:
if fails >= 20:
break
headers = {'Content-Type':"application/json"}
ret = requests.post(url=url, data=json.dumps(param), headers=headers, timeout=10)
if ret.status_code == 200:
text = json.loads(ret.text)
else:
continue
except Exception as e:
fails += 1
print('网络连接出现问题, 正在尝试再次请求: ', fails)
else:
break
return text
看起来好像没什么问题对不对。
如果你运气好,接口参数完全传对,网络也正常,这段代码是没什么问题的。
但是,开发过程中,往往运气没这么好。
假如这个接口在你不知道的情况下改了参数,那么,这段代码就存在很大的问题。
假如你参数传错了:
1、ret.status_code不等于200,但程序不会有任何提示,以至于你根本看不出来是参数传错了
2、当引发异常时,打印出来的是网络连接出现问题,给人误导。
在开发过程中,上面两个问题,就是我最近遇到的问题,当然,这代码是我写的,写出这种不严谨的代码,给自己制造了困难,因此,写下这篇文章记录下这种低级错误,警醒自己以后不再犯此类错误。
将代码简单改写下,即使出现问题,也能够及时排查出来:
def request_create_commnuity(self, url, param):
fails = 0
while True:
try:
if fails >= 20:
break
headers = {'Content-Type':"application/json"}
ret = requests.post(url=url, data=json.dumps(param), headers=headers, timeout=10)
if ret.status_code == 200:
text = json.loads(ret.text)
else:
print(ret.raw())
continue
except Exception as e:
print(e)
fails += 1
else:
break
return text
1、当ret.status_code不等于200时,打印出报错信息,根据报错信息,能快速定位报错原因
2、当出现异常时,打印出报错信息,快速定位报错原因
总结:
以上两个问题,都是由于没有正确规范地对异常做处理,导致错误无法快速定位。
日后务必注意此类问题,规范自己写的代码。
感谢每一次跌倒都有搀扶的手
团队博客: CSDN AI小组