全局异常处理(AOP)
层次结构
捕获异常-》处理-》抛出异常(给下一层处理)
如果全局都不处理异常,默认返回客户端的是一个状态码500;
restful api异常请求:200不是指请求成功响应,而是指成功拿到了想要的结果,一般定义为400。
代码越抽象,复用性越高,封装性越好,适应代码变化的能力就越强
异常的分类:
- 由于用户行为导致(没有通过验证器,没有查询到结果)
- 通常不需要记录日志(视情况而定)
- 需要返回具体信息
- 由自定义基类(BaseException)传过来的异常
- 服务器自身异常(代码错误、调用外部接口)
- 通常需要记录日志
- 不需要返回具体信息
Log日志
在记录日志的时候,先将config文件中定义的log方法初始化一下
Log::init([
‘type’ => ‘File’,//日志记录方式
‘path’=>‘LOG_PATH’,//日志保存目录
‘level’=>[‘error’]//日志记录级别,只有高于‘error’的级别才会记录到log日志中
])
如果不定义错误等级,默认为自定义错误
异常类库
- 错误信息
- 错误码自定义(根据自己的习惯,可用统一开头的数定义为一类五位数组成的错误码)
将restful api统一返回信息在异常类里面定义成公共的全局变量,可在用到的地方再重定义
自定义异常
如果是自定义异常类
if(