在項目的開發過程當中異常拋出尤其重要不只可以作出友好提示幫助掩蓋咱們偉大的程序員們尷尬的瞬間,還能作到提示開發人員代碼白編寫的錯誤,下面進行自定義異常拋出類,純屬我的理解,但願你們指正php
首先在框架中咱們能夠自定義目錄結構用來作異常類的存儲位置例如文件目錄爲如下紅框中程序員
定義目錄結構後闡述一下我理解的異常類的工做流程,見名知意既然是異常拋出那麼只有在代碼出現問題的時候或者是邏輯出現異常的時候會進行拋出,那麼我認爲這就會出現兩種狀況,thinkphp
第一種是用戶傳輸的參數或者用戶操做的流程有問題這種狀況下並非咱們的開發的代碼或者是業務邏輯出現的致命錯誤,直白的將這種狀況就是用戶的請求沒有返回相應的數據服務器
第二種是咱們的代碼存在問題,或者是服務器上面的問題,可是這個問題咱們是不須要用戶知道的,在這種狀況下咱們即須要給出用戶的友好提示,還須要知道咱們的代碼具體是哪裏出現了問題因此這種狀況下咱們就須要記錄日誌框架
分析了兩種狀況以後首先建立應對第一種狀況的類,命名爲BaseException.php在這個類中須要定義的很簡單就是對應第一種狀況的友好信息thinkphp5
信息中包括的是拋出異常的http狀態碼、異常的信息、自定義異常的狀態碼(可選)日誌
可是BaseException.php須要繼承Exception雖然咱們是本身定義的異常類可是仍是須要遵循規律,既然要拋出異常,就須要有捕獲異常,BaseException.php代碼以下blog
下面看一下官方手冊繼承
很明顯官方已經指出咱們接下來要作的開發
定義Z_Exception.php用來繼承Handle類而且重寫render方法,這樣咱們就能夠將咱們自定義的信息進行拋出,而且在這個類中穿插判斷用來應對第二種異常的狀況
至此存在一個值得注意的問題在config.php中的問題
自己此處爲空但咱們已經本身定義了異常類,若是沒有更改的話會致使致命錯誤這裏你們應該值得注意一下
處理以後繼續下一步添加日誌
經過入口文見index.php能夠追蹤到框架的核心文件start.php打開以後看到加載base.php而後打開base.php就能夠看到文件的配置項找到log查看文件的路徑
由此能夠定位到log文件的路徑
由此咱們更改一下log的路徑方便咱們之後管理,在index.php中從新定義LOG_PATH的路徑
更改文件的路徑後咱們應該將框架中默認的記錄日誌的方式進行更改能夠參考官方的文檔
https://www.kancloud.cn/manual/thinkphp5/118126
更改框架中的日誌的記錄方式就是在config.php查找Log模塊,將日誌的type由File更改成test
既然日誌是爲了應對生產環境下的問題那麼我在代碼編寫的時候就應該在
以後進行日誌的記錄,可是要是進行日誌的記錄咱們就應該使用框架中的Log類
在Z_Exception.php中定義方法用來寫入日誌
而後再調用
這樣就完成了自定義的類和自定義的日誌文件
https://www.kancloud.cn/xiaoshengzi/thinkphp5/484897