Laravel throws a large number of exceptions and is very easy to customize them to suit our needs as required.
Note: These exceptions are most helpful if you’re building an API.
The code for common exception handler lies in the {project_root}/app/Exceptions/
folder, named Handler.php
. The default file looks like this in Laravel 5.7.
<?php namespace App\Exceptions; use Exception; use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; class Handler extends ExceptionHandler { /** * A list of the exception types that are not reported. * * @var array */ protected $dontReport = [ // ]; /** * A list of the inputs that are never flashed for validation exceptions. * * @var array */ protected $dontFlash = [ 'password', 'password_confirmation', ]; /** * Report or log an exception. * * @param \Exception $exception * @return void */ public function report(Exception $exception) { parent::report($exception); } /** * Render an exception into an HTTP response. * * @param \Illuminate\Http\Request $request * @param \Exception $exception * @return \Illuminate\Http\Response */ public function render($request, Exception $exception) { return parent::render($request, $exception); } }
Some of the common exceptions that we’re going to handle in this tutorial are AuthenticationException
, MethodNotAllowedHttpException
, ModelNotFoundException
, NotAcceptableHttpException
, NotFoundHttpException
, PostTooLargeException
, ValidationException
.
Below is the explanation for each variable, functions and handler implemented.
protected $dontReport = []
is the array of exceptions that Laravel wouldn’t report. Here we’re going to mention the exceptions that we don’t want laravel to report.