在撰寫專案時,有時候可能需要做一些特定Exceptions
來拋出error message
的情況,而在不同公司任職,大家配置的流程可能就有些不同,這邊將簡單練習如何配置自定義的Exception
。
根據Laravel 功能就有分成異常報告(Exception Reporting)
和渲染(Rendering)
兩種,是與處理異常(Exception Handling)相關的兩個重要概念。而在app/Exceptions/Handler.php
類中一起使用,作為自定義錯誤處理。
以下簡單說明 Reporting 及 Rendering 使用方式
異常報告是指在應用程序運行時當異常(例如,未捕獲的異常)發生時,Laravel將異常信息記錄下來,以便後續的故障排除和記錄。
而Laravel通常使用Monolog或其他日誌庫來記錄這些異常。當異常發生時,Laravel會將相關信息(如異常消息、堆棧跟蹤等)寫入日誌文件,您可以設置日誌的目標、級別和格式等配置選項,以自訂異常報告的行為。
範例如下
接著設定異常拋出
操作執行後確認異常有無寫入log,laravel log
檔案位置在storage/logs/laravel.log
,這邊可以看到拋出error跟紀錄。
render
方法允許您自訂異常的響應,例如返回一個錯誤頁面、JSON響應或其他自訂響應。下列為定義一個render方法,我們可以使用$this->reportable
來測試error message
,這邊我使用HttpExcepition配置JSON response
接著設定異常拋出
操作執行後確認異常結果
Laravel 允許我們用於處理特定錯誤或異常情況下額外創建特定的Exceptions,以便在應用程式中更好地控制錯誤和異常的處理。
例如我們可以創建一個自定義的ApiExceptions
類,繼承HttpException
方法
接著使用自定義的ApiException 並傳入自定義的錯誤訊息跟statusCode
接下來看測試error message是否正常丟出
而當我們專案有許多需要根據不同 Api 路由檔定義相同方法而不同的錯誤異常結果,我們可以修改成以下方式
建立共用方法interface
定義特定的Exceptions,命名一個CourseException
接著設定異常拋出,使用CourseException
的throwPasswordErrorException
方法,可以根據自定義的status code 及message 拋出
附上自定義的翻譯檔,位於lang/en/error.php
接下來看測試error message是否正常丟出
總結:以上是針對配置自定義的Exception
學習筆記,根據公司專案要求,可選擇簡單配置或是可擴展的自定義Exception
類,透過實作也比較能釐清哪些實作方式更適合XDDDD