Laravel錯誤處理


Laravel所有的異常是由 app\Exceptions\Handler 類來處理。 這個類包含兩個方法 - report 和 render。

report()方法

report() 方法用於報告或記錄異常。 它也可以用來傳送紀錄檔例外類似 Sentry, Bugsnag 等外部擴充套件服務

render()方法

render() 方法用來呈現異常到HTTP響應送回瀏覽器。

除了這兩種方法,app\Exceptions\Handler 類包含一個一個重要屬性名為 「$dontReport」。此屬性採用的異常型別陣列將不會被紀錄檔記錄。

HTTP例外

一些異常描述HTTP錯誤程式碼類似:404,500等。要在應用程式中的任何地方產生這樣響應,你可以按如下方式使用abort()方法。

abort(404)

自定義錯誤頁

Laravel使得讓我們很容易使用每個單獨的錯誤程式碼來自定義錯誤頁。 例如,如果想設計的自定義頁面錯誤程式碼:404, 你可以建立一個檢視為 :resources/views/errors/404.blade.php。同樣的道理,如果你想設計錯誤程式碼是500的錯誤頁,它應存放在:resources/views/errors/500.blade.php.

範例

第1步 - 新增以下行到檔案 : app/Http/routes.php

Route::get('/error',function(){
   abort(404);
});
第2步 - 建立一個名為 resources/views/errors/404.blade.php 的檢視檔案,並複製下面的程式碼到此檔案中。

resources/views/errors/404.blade.php

<!DOCTYPE html>
<html>
    
   <head>
      <title>404頁面</title>
      <link href = "https://fonts.googleapis.com/css?family=Lato:100" rel = "stylesheet" 
         type = "text/css">
   
      <style>
         html, body {
            height: 100%;
         }
         body {
            margin: 0;
            padding: 0;
            width: 100%;
            color: #B0BEC5;
            display: table;
            font-weight: 100;
            'Lato';
         }
         .container {
            text-align: center;
            display: table-cell;
            vertical-align: middle;
         }
         .content {
            text-align: center;
            display: inline-block;
         }
         .title {
            font-size: 72px;
            margin-bottom: 40px;
         }
      </style>
		
   </head>
   <body>
	
      <div class = "container">
         <div class = "content">
            <div class = "title">404 錯誤</div>
         </div>
      </div>
		
   </body>
</html>
第3步 - 存取以下網址測試事件。

http://localhost:8000/error

第4步 - 存取URL後,您會看到以下輸出 -