Laravel – Xử lý Error

Tất cả exception trong laravel được xử lý bởi class app\Exceptions\Handler. Class này chứa 2 phương thức.

Phương thức report()

report() Phương thức này sẽ ghi lại log exception. Hay gửi chúng đến các dịch vụ ngoài như Bugsnag hoặc Sentry.

Phương thức render()

render() Phương thức này sẽ chuyển exception thành HTTP response và trả lại cho trình duyệt.

Ngoài 2 phương thức trên, Class app\Exceptions\Handler còn chứa 1 thuộc tính quan trọng đó là “$dontReport“. Thuộc tính này là 1 mảng các loại exception không ghi vào log.

HTTP Exceptions

Một số exception miêu tả mã HTTP error như 404, 500… Để tạo ra response tương ứng với một mã lỗi bất kỳ, bạn có thể sử dụng phương thức abort().

abort(404)

Custom Error pages

Việc tạo một trang thông báo lỗi trong Laravel rất dễ dàng. Ví dụ, bạn muốn thông báo lỗi 404 chỉ cần tạo một view resources/views/errors/404.blade.php. Tương tự tạo view khác resources/views/errors/500.blade.php cho lỗi 500.

Ví dụ

Step 1 : Thêm code sau vào routes/web.php.

routes/web.php

Route::get('/error',function(){
   abort(404);
});

Step 2 : Tạo View resources/views/errors/404.blade.php vào thêm vào code bên dưới.

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;
            font-family: '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 Error</div>
         </div>
      </div>
		
   </body>
</html>

Step 3 : Vào link bên dưới để kiểm tra kết quả.

http://localhost:8000/error