学习thinkphp5不可预知的内部异常api数据输出解决方案

学习thinkphp5不可预知的内部异常api数据输出解决方案

原报错异常

在save 方法中创造一个报错,如下,无data变量,但是echo,


    //post 需要定义$id
    public function save()
    {

        echo $data;

        $post_data = input('post.');
        $data = array(
            'post_data' => $post_data
        );
        return show(0, '保存成功!', $data);
    }

请求报错,抛出异常
学习thinkphp5不可预知的内部异常api数据输出解决方案

自带报错异常,是调用的根目录下\thinkphp\library\think\exception 中Handle.php类的render方法
学习thinkphp5不可预知的内部异常api数据输出解决方案

    public function render(Exception $e)
    {
        if ($e instanceof HttpException) {
            return $this->renderHttpException($e);
        } else {
            return $this->convertExceptionToResponse($e);
        }
    }

我们需要新建一个类,重新渲染render方法,改变抛出异常的方式

封装报错异常类

1、创建文件ApiHandleException.php

在thinkphpwu\application\common\lib\exception 目录下创建ApiHandleException.php文件
学习thinkphp5不可预知的内部异常api数据输出解决方案
具体代码如下:

<?php

namespace app\common\lib\exception;


//引用异常类
use think\exception\Handle;

//继承异常类
class ApiHandleException extends Handle
{

    //自定义http状态码
    public static $httpCode = 400;

    //覆盖原有render方法
    public function render(\Exception $e)
    {
        return show(0, $e->getMessage(), [], self::$httpCode);
    }

}

2、修改config.php配置

在application目录下的config.php中找到exception_handle

学习thinkphp5不可预知的内部异常api数据输出解决方案
修改:

    // 异常处理handle类 留空使用 \think\exception\Handle
    'exception_handle' => 'app\common\lib\exception\ApiHandleException',

postman测试

学习thinkphp5不可预知的内部异常api数据输出解决方案

上一篇:thinkphp5支付宝服务商手机网站支付新版sdk


下一篇:thinkphp5打印生成的SQL语句【转】