Thinkphp6中位于app目录下有一个文件ExceptionHandle.php,这个文件就是整个项目的异常处理文件,所有程序抛出异常,均会定位到这个文件中的render方法中,你可以在这里进行全局的异常处理。
但是这个文件的作用域是整个项目,针对目前的api模块来说需要的是JSON格式的错误信息,后期开发前台的时候就不需要JSON格式的信息了,可能是一个前端小姐姐写的页面。
于是乎,就需要针对api模块新增异常处理
在api目录下增设一个Exception目录
??
?
上面的异常处理类文件随便起,但是要有意义
在这个类的render方法中完成异常捕获后的处理
public function render($request, Throwable $e): Response
{
// 统一将异常以json格式返回
return fail($e->getMessage());
}
将异常类注册到服务容器中
?
<?php
use app\Request;
// 容器Provider定义文件
return [
'think\Request' => Request::class,
'think\exception\Handle' => \app\api\Exception\ApiException::class
];
上面就完成了,当api模块下抛出异常时,就会主动寻找ApiException这个文件进行特殊的JSON抓换
效果
?
|