1. 说明
感谢做微信小程序的那位(抱歉,忘记他的名字了)基于TP5.0给我演示全局异常处理的AOP编程思想。顾名思义,全局异常处理就是程序抛出异常后统一在一个地方处理。这样做的好处就是当程序出现异常时不用写大量重复的代码来,减少代码的数量,减少维护成本。
其实很简单官方文档也写了,无非就3步:1,在一个地方写好异常处理的类;2,把类的路径写入配置文件中;3,抛出异常或者代码运行错误就会去执行这个类。
2.好,开干!
2.1 先写用于处理异常的类
1 | $ php think build --module lib #TP5.0的根目录新建一个lib模块 |
1 |
|
1 |
|
1 |
|
2.2 配置配置文件
框架支持异常页面由开发者自定义类进行处理,需要配置参数exception_handle
1 | // 异常处理handle类 留空使用 \think\exception\Handle |
2.3 好了,可以进行抛出了
1 | throw new \app\lib\exception\BannerMissException(); |
3.总结
这个异常抛出有2种情况。一种是代码自己的异常,默认的错误信息['code'=>500,'msg'=>'服务器内部错误,不能告诉你','errorCode'=>999],一种是主动抛出的。如throw new \app\lib\exception\BannerMissException(); 。它的这个执行机制是,把一个类比如BannerMissException抛出后,由自定义异常类判断是否是属于其基类BaseException的这种异常的错误信息格式,如果是,就抛出BannerMissException的错误信息,如果不是,就抛出默认的错误信息['code'=>500,'msg'=>'服务器内部错误,不能告诉你','errorCode'=>999]。
这种情况,TP5.0手册都有写的,可以查看 https://www.kancloud.cn/manual/thinkphp5/126075 。