API開發 – 讓異常變得優雅

公司在作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

相關文章
相關標籤/搜索