skip to Main Content

what i am trying to do is if the connection to the database fails, instead of getting No connection could be made because the target machine actively refused it, i want to throw a custom view that displays a simple h1 with the text that the connection fails. How can i do that?

3

Answers


  1. Chosen as BEST ANSWER

    The answer was given at the top, but i made it work with some modifications.

    use Throwable;
    use PDOException;
    
    public function render($request, Throwable $exception)
    {
        if ($exception instanceof PDOException) {
            return response()->view('errors.database', [], 500);
        }
    
        return parent::render($request, $exception);
    }
    

  2. You can do this by modifying your app/Exceptions/Handler.php to catch that specific error:

    public function render($request, Throwable $exception) {
        if ($exception instanceof QueryException) {
            return response()->view('errorpage');
        }
    
        return parent::render($request, $exception);
    }
    

    Of course you can change the QueryException to any exception that you want to handle, such as: IlluminateDatabaseEloquentModelNotFoundException or any other.

    Login or Signup to reply.
  3. In app/Exceptions/Handler.php

    use PDOException;
    use AppExceptionsHandler;
    
    class ExceptionHandler extends Handler
    {
        public function render($request, Exception $exception)
        {
            if ($exception instanceof PDOException) {
                return response()->view('errors.database', [], 500);
            }
    
            return parent::render($request, $exception);
        }
    }
    

    In resources/views/errors, errors.database, you can create custom style

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search