Closed
Description
Symfony version(s) affected: 4.4.0
Description
ErrorListener doesnt convert throwable to legacy FlattenException for controller argument and it leads to exception:
Argument 1 passed to ExceptionController::__invoke() must be an instance of Symfony\Component\Debug\Exception\FlattenException, instance of TypeError given, called in /.../vendor/symfony/http-kernel/HttpKernel.php on line 146
How to reproduce
Declare controller with Symfony\Component\Debug\Exception\FlattenException
argument,
use Symfony\Component\HttpKernel\EventListener\ErrorListener
with configured reference to controller.
Possible Solution
Check Symfony\Component\Debug\Exception\FlattenException
here
Additional context
DI config:
services:
exception_error.listener:
class: Symfony\Component\HttpKernel\EventListener\ExceptionListener
tags:
- { name: kernel.event_listener, event: kernel.exception, method: onKernelException, priority: -1 }
arguments:
- 'ExceptionController'
- '@?logger'
Controller example:
use Symfony\Component\Debug\Exception\FlattenException;
use Symfony\Component\HttpFoundation\JsonResponse;
class ExceptionController
{
public function __invoke(FlattenException $exception): JsonResponse
{
return new JsonResponse(['message' => $exception->getMessage(), 'failed' => true]);
}
}
Metadata
Metadata
Assignees
Labels
No labels