需求背景,可以简化为向用户设置的url发送带参数的post请求;
先贴两个版本的代码,
#if else
```python
def request_hook_url(task_param, hook_url):
if hook_url:
r = requests.post(hook_url, json=task_param)
request_code = r.status_code
if request_code == 200:
logger.info(f'request_hookRUL success status code:{request_code}')
else:
logger.error(f'request_hookURL process failed,status code:{request_code}')
else:
logger.error(f'request_hookRUL failed: {e}')
![设置url为不合法的url地址,函数执行到这个函数会终止运行,这个函数后面的逻辑没有执行,这叫异常导致函数非法终止。有很长的报错信息](https://img-blog.csdnimg.cn/img_convert/ab76fafbecf235fe0eefc301f129682c.png)
try except代替if else
```python
def request_hook_url(task_param, hook_url):
try:
r = requests.post(hook_url, json=task_param)
request_code = r.status_code
if request_code == 200:
logger.info(f'request_hookRUL success status code:{request_code}')
else:
logger.error(f'request_hookURL process failed,status code:{request_code}')
except Exception as e:
logger.error(f'request_hookRUL failed: {e}')
- 所以总的来说,try except我可以把他理解为用着更放心的if-else(或者是高级版),他不仅可以帮你解决一些自己为预料到的错误方式且帮你处理遇到的异常,以使你程序正确推进;而且还可以告诉你异常的类型,这样更方便后期debug和定位错误。
- 怎么用呢?夹住可能会出现异常的代码块上下。