公司在作APP开发.做为程序员不免会出点小BUG!哪如何捕获呢。在APP上出现bug一般会出现闪退,和没法解析错误一直加载.php
用到的框架是 ThinkPHP5.程序员
有一个想法。将错误也变成json格式.code码定义为500 若是移动端发现错误为500的话 就温柔提醒.而且服务端保存错误信息.供开发者修改.thinkphp
下面说下如何实现。~json
首先修改配置项 application/config.phpapi
// 异常处理handle类 留空使用 \think\exception\Handle 'exception_handle' => '\app\common\exception\Http',
本来是留空的 如今改成咱们自定义的控制器app
建立一个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串.喜欢的朋友请给一个支持thinkphp5