Laravel error handling, get_class vs instanceof

Viewed 9652

In the following code in app/Exceptions/Handler.php, the first one doesn't work but the second one does.

dd(get_class($exception)); outputs "Illuminate\Database\Eloquent\ModelNotFoundException".

The first one is similar to the doc. How can I make it work using instanceof?

    public function render($request, Exception $exception)
    {
        //dd(get_class($exception));
        // this does not work.
        if ($exception instanceof Illuminate\Database\Eloquent\ModelNotFoundException
) {
            return response()->json(['error'=>['message'=>'Resouce not found']], 404);
        }
        // This one works.
        if(get_class($exception) == "Illuminate\Database\Eloquent\ModelNotFoundException") {
            return response()->json(['error'=>['message'=>'Resouce not found']], 404);
        }

        return parent::render($request, $exception);
    }
2 Answers

Sometimes an $exception is rethrown, so try to use

$exception->getPrevious() instanceof XXX

or

get_class($exception->getPrevious()) == 'XXX'
Related