phplaravellaravel-11

Laravel 11 - how to call the old 'Handler.php' class from app.php - withExceptions


I have recently created a new project in Laravel 11 and can not get my custom error handling class to work. I have a class I use throughout all my Larvael projects (laravel 10). I want to use this class in Laravel 11 to process all my errors, but it seems the new version relies on the withExceptions method in app.php

->withExceptions(function (Exceptions $exceptions) {

Does anyone know how I can get the withExceptions class to still use this (or any) external class for handling


use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;

class Handler extends ExceptionHandler {

}

Solution

  • In Laravel 11, exception handling with custom classes registration has changed. To use your custom handler:

    1. Create your custom handler:
    namespace App\Exceptions;
    
    use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
    use Throwable;
    
    class CustomHandler extends ExceptionHandler
    {
        public function render($request, Throwable $e)
        {
            // Custom logic
            return response()->json(['error' => $e->getMessage()], 500);
        }
    }
    
    1. Register it in bootstrap/app.php:
    $app->singleton( Illuminate\Contracts\Debug\ExceptionHandler::class, App\Exceptions\CustomHandler::class );
    

    You can inject external classes into CustomHandler for additional processing.


    More details: