面向过程的异常处理使得代码及其复杂,不是好的处理异常的方法。项目中常用的是全局异常处理的方式。
编写全局异常处理的思路如下:
在接口代码中调用业务代码(model层中)出现异常,通过统一的方法来将异常信息返回给客户端。
异常处理层的基本结构如下:BaseException类规定了错误的缺省信息,BannerMissException用没有找到Banner的错误信息将缺省的错误信息覆盖,
ExceptionHandler类用render函数将错误信息返回给客户端。
这里有一点需要特别注意,TP5中默认使用自带的异常处理类来处理异常,如果我们要用自定义的异常处理类要在config中进行如下设置:
// 异常处理handle类 留空使用 \think\exception\Handle
'exception_handle' => 'app\lib\exception\ExceptionHandler',