我们先来梳理一下异常的分类:
tp5.1 有一个全局异常处理类,如果我们想自己实现上面的分类,需要覆盖和重写默认的全局异常处理类。
我们现在在 api 模块的同级下新建一个 lib 文件夹,再新建一个 exception 文件夹。
(我们想让这个 exception 里的类是一个通用的,可以供很多模块使用的一个类库。)
新建 ExceptionHandler 的 php class,并继承 Handle 类。
并且重新指定 tp5.1 的全局异常处理类:
在 config.php 文件中的 'exception_handle’字段输入我们自定义的处理器的命名空间:
app\lib\exception\ExceptionHandler
代码如下:
<?php
namespace app\lib\exception;
use think\exception\Handle;
class ExceptionHandler extends Handle {
public function render(Exception $e){
// 重写render方法
return json('是否重写成功');
}
}
User控制器代码:
public function getUserById($id)
{
(new IDMustBePositiveInt())->goCheck();
throw new \think\Exception('手动异常', 10006);
}
结果如下: