I wonder if it's possible to register a second Exception Handler in a package in Laravel 5.
I have a package (let's call it api-serializer) that register a middleware to convert all requests to JSON (for an API) and this package register 2 helpers: success()
and failure()
that handle specifically the json when an error occurs (or not).
In my application exception handler I do the following:
/**
* Render an exception into an HTTP response.
*
* @param \Illuminate\Http\Request $request
* @param \Exception $e
* @return \Illuminate\Http\Response
*/
public function render($request, Exception $e)
{
return failure($e->getMessage());
}
Now I have a second package (let's call it tumblr-api) that makes http calls and raise exceptions, for instance:
throw (new CustomCoolException)->setModel($model);
I would like to treat this exception differently, because the message is located in the $model
, do smething like this:
if ($e instanceof CustomCoolException) {
return failure($e->getModel()->getMessage());
}
What I don't want to do it's to add my package exception to my main exception handler, as they'll be tightly binded.
I neither want to create a dependency between my api-serializer that exposes success()
and failure()
to my tumblr-api package.
Is it possible, from my api-serializer to register a second ExceptionHandler or add specific switchs for it's exceptions without altering anything else ?
I would like to make my tumblr-api package as independent as possible, so the user installing it just have to register the service provider and go !
You can override the App's Exception handler with your own package's exception handler in your package's controllers like this:
Credits go to malhal at https://laracasts.com/discuss/channels/requests/custom-exception-handler-based-on-route-group