API開發 – 讓異常變得優雅

H小黃發表於2019-02-16

公司在做APP開發.作為程式設計師難免會出點小BUG!哪如何捕獲呢。在APP上出現bug通常會出現閃退,和無法解析錯誤一直載入.

用到的框架是 ThinkPHP5.

有一個想法。將錯誤也變成json格式.code碼定義為500 如果移動端發現錯誤為500的話 就溫柔提醒.並且服務端儲存錯誤資訊.供開發者修改.

下面說下如何實現。~

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

// 異常處理handle類 留空使用 	hinkexceptionHandle
`exception_handle`       => `appcommonexceptionHttp`,

原本是留空的 現在改為我們自定義的控制器

建立一個Http控制器 繼承thinkexceptionHandle類 重寫 render方法. 這裡注意一點 最好不要用框架裡的一些方法了.這個檔案的啟動順序大於一些方法.

<?php

namespace appcommonexception;

use appapicontrollerLog;
use Exception;
use thinkexceptionHandle;
use thinkexceptionHttpException;

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串.喜歡的朋友請給一個支援

相關文章