ThinkPHP不可预知的异常捕获处理

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抓换

效果

 

posted @ 2023-04-12 15:01  哎呀呀哈  阅读(150)  评论(0)    收藏  举报  来源