3

公司在做APP开发.作为程序员难免会出点小BUG!哪如何捕获呢。在APP上出现bug通常会出现闪退,和无法解析错误一直加载.

用到的框架是 ThinkPHP5.

有一个想法。将错误也变成json格式.code码定义为500 如果移动端发现错误为500的话 就温柔提醒.并且服务端保存错误信息.供开发者修改.

下面说下如何实现。~

首先修改配置项 application/config.php

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

原本是留空的 现在改为我们自定义的控制器

创建一个Http控制器 继承thinkexceptionHandle类 重写 render方法. 这里注意一点 最好不要用框架里的一些方法了.这个文件的启动顺序大于一些方法.

<?php

namespace app\common\exception;

use app\api\controller\Log;
use Exception;
use think\exception\Handle;
use think\exception\HttpException;

class Http extends Handle
{

    public function render(\Exception $e)
    {

        // 只要有错误就返回错误json
        $arr = [
            'code' => 500,
            'msg' => $e->getMessage(),
            'data' => 'URL : http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]
        ];
        $error_info = json_encode($arr, 512) . PHP_EOL;
        echo $error_info;
        if (!is_dir('../runtime/errorlog/')) mkdir('../runtime/errorlog/', 0777, true);


        file_put_contents('../runtime/errorlog/' . date('Ymd', time()) . '.txt', $error_info, FILE_APPEND);
        exit;
    }
}

这样就能将thinkphp5原本的报错页面变成可识别的json串.喜欢的朋友请给一个支持


H小黄
265 声望17 粉丝

后端开发攻城狮(#^.^#)