在項目的開發過程中異常拋出尤為重要不僅能夠做出友好提示幫助掩蓋我們偉大的程序員們尷尬的瞬間,還能做到提示開發人員代碼白編寫的錯誤,下面進行自定義異常拋出類,純屬個人理解,希望大家指正
首先在框架中我們可以自定義目錄結構用來做異常類的存儲位置例如文件目錄為以下紅框中
定義目錄結構后闡述一下我理解的異常類的工作流程,見名知意既然是異常拋出那么只有在代碼出現問題的時候或者是邏輯出現異常的時候會進行拋出,那么我認為這就會出現兩種情況,
第一種是用戶傳輸的參數或者用戶操作的流程有問題這種情況下並不是我們的開發的代碼或者是業務邏輯出現的致命錯誤,直白的將這種情況就是用戶的請求沒有返回相應的數據
第二種是我們的代碼存在問題,或者是服務器上面的問題,但是這個問題我們是不需要用戶知道的,在這種情況下我們即需要給出用戶的友好提示,還需要知道我們的代碼具體是哪里出現了問題所以這種情況下我們就需要記錄日志
分析了兩種情況之后首先創建應對第一種情況的類,命名為BaseException.php在這個類中需要定義的很簡單就是對應第一種情況的友好信息
信息中包括的是拋出異常的http狀態碼、異常的信息、自定義異常的狀態碼(可選)
但是BaseException.php需要繼承Exception雖然我們是自己定義的異常類但是還是需要遵循規律,既然要拋出異常,就需要有捕獲異常,BaseException.php代碼如下
下面看一下官方手冊
很明顯官方已經指出我們接下來要做的
定義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中定義方法用來寫入日志
然后再調用
這樣就完成了自定義的類和自定義的日志文件
以上純屬個人理解,不足之處望大家見諒!!!!