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);
}
To use instanceof
you must use the full class name, and if your class has a namespace then you should use the fully qualified class name of the class.
And there is an other way to use instanceof
using a short name (alias) for a given class thanks to use
statement, in your case you can use it like so :
use Illuminate\Database\Eloquent\ModelNotFoundException as ModelNotFoundException; // on top of course :)
if ($exception instanceof ModelNotFoundException) {
return response()->json(['error'=>['message'=>'Resouce not found']], 404);
}
Sometimes an $exception is rethrown, so try to use
$exception->getPrevious() instanceof XXX
or
get_class($exception->getPrevious()) == 'XXX'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With