TP5使用API時不可預知的內部異常

2022-08-23 09:42:09 字數 2449 閱讀 9630

最常見的錯誤形式例如 controller不存在或者 action不存在之類的 我們第一時間想到的 就是 使用 try{}catch(){} 來捕獲 例如:

/*

* * show方法在common裡定義過--統一返回介面

* @return array

*/public

function

test()

catch (\exception$e)

}

但是有的錯誤我們是沒有辦法捕獲到的 會返回如下格式

我們api是沒有辦法識別的 所以遇到這種情況 我們應該怎麼解決呢?

首先 不論什麼框架 他都有自己的 錯誤渲染機制 我們應當找到這個渲染機制 去修改它 tp5框架 在thinkphp/library/think/exception/handle.php中 在這個檔案中 有乙個render方法

}我們需要重寫這個方法 使之返回我們想要json格式資料

新建乙個類來繼承handle類

<?php 

use think\exception

\handle;/**

* created by phpstorm.

* user: administrator

* date: 2019/8/15

* time: 11:20 */

class apihandleexception extends

handle

}

指向我們重構的類

接下來我們再去請求 就會返回我們想要的json格式啦

但是問題隨之而來了 如果我們出現如下**報錯的話 狀態會是 500

public

function

test()

}

所以需要我們去建立乙個 內部的異常類  

<?php /**

* created by phpstorm.

* user: administrator

* date: 2019/8/15

* time: 11:36 */

use think\exception

;class apiexception extends

exception

}

建立好了之後 我們需要去修改我們之前建立的  apihandleexecption  類

這樣我們的狀態碼也會隨之改變  不過 我們還需要在進一步的 優化 apihandleexception 類 因為 這樣的異常形式 是給api看的 而我們在開發的時候 是需要渲染錯誤的 所以我們修改一下**

至此我們的 內部異常就解決了 梳理下流程 :

首先我們需要 找到 內部異常渲染類(apihandleexception) 重構它的render方法 重構之後 我們需要進一步的 更改狀態碼 所以需要新建 乙個 類(apiexception)來初始化他們的狀態碼等資料 初始化之後 我們還需要進一步修改我們自己寫的異常渲染類(apihandleexception) 使之在debug模式下 可以正常渲染

tp5驗證器的使用

1.定義驗證器模組 use think validate class admin extends validate 2.控制呼叫 validate validate admin 助手函式匯入1二 驗證器實際使用簡化合併及場景呼叫 1.簡化 驗證器規則和提示資訊合併顯示 protected rule ...

TP5和TP3 2的使用區別

模板標籤不一樣 tp5 可在配置檔案中自行定義自己喜歡的標籤 tp5 使用雙標籤 如 tp3 tp5 呼叫資料表方式 m user where name thinkphp find 3.2 db user where name thinkphp find 5.0 m db 例項化模型的方式 d us...

使用tp5內cache快取,儲存手機簡訊驗證碼

設定手機簡訊驗證碼快取方法 設定手機簡訊驗證碼快取 user jw email jw 333 163.com date param data cache public function setregsmscache data cache 調動手機簡訊驗證碼快取方法 public function s...