private function HttpKernel::handleException in Zircon Profile 8
Same name and namespace in other branches
- 8.0 vendor/symfony/http-kernel/HttpKernel.php \Symfony\Component\HttpKernel\HttpKernel::handleException()
Handles an exception by trying to convert it to a Response.
Parameters
\Exception $e An \Exception instance:
Request $request A Request instance:
int $type The type of the request:
Return value
Throws
\Exception
2 calls to HttpKernel::handleException()
- HttpKernel::handle in vendor/
symfony/ http-kernel/ HttpKernel.php - Handles a Request to convert it to a Response.
- HttpKernel::terminateWithException in vendor/
symfony/ http-kernel/ HttpKernel.php - @internal
File
- vendor/
symfony/ http-kernel/ HttpKernel.php, line 213
Class
- HttpKernel
- HttpKernel notifies events to convert a Request object to a Response one.
Namespace
Symfony\Component\HttpKernelCode
private function handleException(\Exception $e, $request, $type) {
$event = new GetResponseForExceptionEvent($this, $request, $type, $e);
$this->dispatcher
->dispatch(KernelEvents::EXCEPTION, $event);
// a listener might have replaced the exception
$e = $event
->getException();
if (!$event
->hasResponse()) {
$this
->finishRequest($request, $type);
throw $e;
}
$response = $event
->getResponse();
// the developer asked for a specific status code
if ($response->headers
->has('X-Status-Code')) {
$response
->setStatusCode($response->headers
->get('X-Status-Code'));
$response->headers
->remove('X-Status-Code');
}
elseif (!$response
->isClientError() && !$response
->isServerError() && !$response
->isRedirect()) {
// ensure that we actually have an error response
if ($e instanceof HttpExceptionInterface) {
// keep the HTTP status code and headers
$response
->setStatusCode($e
->getStatusCode());
$response->headers
->add($e
->getHeaders());
}
else {
$response
->setStatusCode(500);
}
}
try {
return $this
->filterResponse($response, $request, $type);
} catch (\Exception $e) {
return $response;
}
}