Define HTTP Status Code Of Exception in Symfony 7

Define HTTP Status Code Of Exception in Symfony 7

By default, if an application throws an exception, Symfony will turn that exception into an error with 500 HTTP status code, unless exception implements the HttpExceptionInterface or extends a class that implements that interface (e.g. HttpException).

This tutorial shows how to define the HTTP status code of the exception in Symfony 7 application.

Let's say we have a controller that throws InvalidArgumentException provided by Validator component.

src/Controller/TestController.php

<?php namespace App\Controller; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; use Symfony\Component\Validator\Exception\InvalidArgumentException; class TestController { #[Route('/')] public function index(): Response { throw new InvalidArgumentException(); } }

We will get 500 Internal Server Error if we try to open associate URL of that controller.

Symfony allows defining HTTP status code of the exception by using framework.exceptions option.

config/packages/exceptions.yaml

framework: exceptions: Symfony\Component\Validator\Exception\InvalidArgumentException: status_code: 422

Now exception will be turned into an error with status code 422 Unprocessable Content.

Leave a Comment

Cancel reply

Your email address will not be published.