Lumen错误码定义以及错误处理抛出

最近对项目进行了重构,将以前诟病的代码全部删了,重新写了,这里介绍下Lumen里面如何简单的拦截掉所有错误,达到“上报”和“错误码”的功能。

了解Lumen的错误处理文件及函数

文档地址:https://d.laravel-china.org/docs/5.4/errors#introduction

从文章里可以看出Lumen和Laravel的Exception处理,都可以在App\Exceptions\Handler中进行自定义

Lumen错误码定义以及错误处理抛出_第1张图片
image.png

然后查看这个文件,会发现这个文件包含ReportRendor两个方法,具体方法详见文档

Lumen错误码定义以及错误处理抛出_第2张图片
image.png

错误码定义

新建一个Responser.php,内容大致包括:错误码定义的数据(也可用.json文件替代)成功数据处理错误处理三个方法。

Lumen错误码定义以及错误处理抛出_第3张图片
image.png
Lumen错误码定义以及错误处理抛出_第4张图片
image.png
Lumen错误码定义以及错误处理抛出_第5张图片
image.png

注:successerrorif count() > 0是为了对当数据集返回为空时候的处理,具体百度下json_encode的预定义常量:JSON_FORCE_OBJECT

触发异常

在我的项目中,项目分为了ControllerServiceModel三层,触发异常的处理,我是放在Service层的,Service层是对业务逻辑进行运算的,所以各种错误应该由这里报出

Lumen错误码定义以及错误处理抛出_第6张图片
image.png

Controller层只需要无脑调用方法即可

Lumen错误码定义以及错误处理抛出_第7张图片
image.png

异常处理

修改render方法,对Exception做一个判断,如图:

Lumen错误码定义以及错误处理抛出_第8张图片
image.png

别问我在哪里找的这些方法,我也是看源码看到的,没找到哪里有文档 (/笑哭)

至此这个就做完了,主要是需要对异常进行统一管理,于是采用了异常来做这个错误码的处理,还可以甄别开发环境下切换报错信息,保证正式环境中会及时上报错误信息也不会向用户透露私密的错误信息。

你可能感兴趣的:(Lumen错误码定义以及错误处理抛出)