本文深入探討 Laravel 框架中一個至關重要卻鮮被提及的功能——異常處理。 Laravel 內置的異常處理器能夠輕鬆、友好地報告和渲染異常。
文章前半部分將探討異常處理器的默認設置,並詳細分析默認的 Handler 類,了解 Laravel 如何處理異常。
後半部分將演示如何創建自定義異常處理器來捕獲自定義異常。
在直接深入 Handler 類之前,讓我們先了解幾個與異常相關的關鍵配置參數。
打開 config/app.php 文件,仔細查看以下代碼段:
<code>...<br>/*<br>|--------------------------------------------------------------------------<br>| 应用调试模式<br>|--------------------------------------------------------------------------<br>|<br>| 当应用程序处于调试模式时,将显示包含堆栈跟踪的详细错误消息,<br>| 这些消息与应用程序中发生的每个错误相关联。如果禁用,则显示<br>| 一个简单的通用错误页面。<br>|<br>*/<br><br>'debug' => (bool) env('APP_DEBUG', false),<br>...<br>...<br></code>
顧名思義,如果將其設置為 true,則會顯示詳細的錯誤信息和堆棧跟踪;如果設置為 false,則只會顯示一個通用的錯誤頁面。
接下來,讓我們看看默認的報告方法,該方法用於將錯誤記錄到日誌文件。同時,重要的是要注意渲染方法,當然,您也可以自定義報告方法。
如您所見,我們使用 app/Exceptions/Handler.php 文件中的以下內容將用戶重定向到 render 方法:
<code>/**<br> * 将异常渲染为 HTTP 响应。<br> *<br> * @param \Illuminate\Http\Request $request<br> * @param \Throwable $exception<br> * @return \Symfony\Component\HttpFoundation\Response<br> *<br> * @throws \Throwable<br> */<br>public function render($request, Throwable $exception)<br>{<br> if ($exception instanceof \App\Exceptions\CustomException) {<br> return $exception->render($request);<br> }<br><br> return parent::render($request, $exception);<br>}<br></code>
如您所見,我們首先在 render 方法中檢查異常的類型。如果異常類型是 CustomException
,則調用該類的 render 方法。
CustomException
類現在一切就緒。接下來,讓我們在 app/Http/Controllers/ExceptionController.php 中創建一個控制器文件,以便測試我們的自定義異常類。
<code><?php <br>namespace App\Http\Controllers;<br><br>use App\Http\Controllers\Controller;<br><br>class ExceptionController extends Controller<br>{<br> public function index()<br> {<br> // 出现错误,您想抛出 CustomException<br> throw new \App\Exceptions\CustomException('出现错误。');<br> }<br>}<br></code>
當然,您需要在 routes/web.php 中添加關聯路由,如下所示:
<code>// 异常路由<br>Route::get('exception/index', 'ExceptionController@index');<br></code>
有了這個,您可以訪問 https://www.php.cn/link/acf7e77a5936a316105ce94cee522f5d URL 來查看它是否按預期工作。它應該根據我們的配置顯示 errors.custom
視圖。
這就是在 Laravel 中處理自定義異常的方法。
今天,我們學習了 Laravel 中的異常處理功能。在文章開頭,我們探討了 Laravel 提供的基本配置,以便渲染和報告異常。此外,我們簡要了解了默認的異常處理器類。
在文章的後半部分,我們準備了一個自定義異常處理器類,演示瞭如何在應用程序中處理自定義異常。
以上是Laravel中的例外處理的詳細內容。更多資訊請關注PHP中文網其他相關文章!