统一异常处理
其实每个项目都是需要用到统一异常处理的, 如果项目返回给一大堆信息给
前端, 或者用户是极其不友好的
优点:
- 抛出自己项目的已知异常
- 捕获未知异常
- 统一返回格式
为什么要用统一异常处理
项目的返回格式应该需要格式化且统一, 不论是已知异常和未知异常
这样前端处理起来会比较方便, 也比较规范
什么是已知异常?
- 用户找不到
- 资源未能访问
- 权限不足
- 手机号格式错误
- …
什么是未知异常?
未知异常 顾名思义就是无法预期的异常
参数不能为空, 没有做任何判断, 跑起来就会发生异常…
错误? 异常? 两者有什么区别
错误 不等于 异常
错误是很难规避的,
错误就是代表出错了 (1 / 0), 0是不能做分母的, 如果在动态条件下, 没有做任何限制
代码就会运行错误, 0不可以做除数这就是错误, 数据库未连接也是一种错误~~你如果预期到也不会报错了
此项目推荐的返回格式, 也是推荐的返回格式
{
"code": 500,
"message": "我们捕捉到一个未知的异常",
"status_code": 99999,
"url": "GET /user/info"
}
在此向大家推荐一个已经实现异常处理的框架
还在制作composer包, 敬请期待…
项目地址在这里: 项目地址点我
使用项目?
- 查看 app/libs/exception有什么异常类
- 在 app/libs/exception/ExceptionCode.php 文件中更新自己项目的异常码和异常信息
- 在控制器使用 throw new ParamException(10001);
- 创建.env文件 配置 APP_DEBUG = false 一定要是false, true是给开发者看的, 改成false是给用户和前端使用的
throw new ParamException(10001);
异常类有三个参数:
1. 错误码
2. Http状态码
3. Message
如果不传, 默认就是异常类定义好的