Исключение HttpException
Исключение HttpException используется для
генерации HTTP-ошибок в приложении Symfony. Оно
наследуется от класса \RuntimeException и
реализует интерфейс HttpExceptionInterface.
Первым параметром передаётся статус-код HTTP,
вторым - сообщение об ошибке, третьим - предыдущее
исключение, четвёртым - массив заголовков ответа.
При выбросе этого исключения Symfony автоматически
вернёт клиенту ответ с указанным статус-кодом.
Синтаксис
use Symfony\Component\HttpKernel\Exception\HttpException;
throw new HttpException($statusCode, $message, $previous, $headers);
Пример
Давайте выбросим исключение с кодом 404
и сообщением 'Page not found':
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\HttpException;
class ArticleController extends AbstractController
{
public function index(): Response
{
throw new HttpException(404, 'Page not found');
}
}
?>
Результат выполнения кода:
Page not found
Пример
Давайте передадим массив заголовков вместе с исключением:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\HttpException;
class ArticleController extends AbstractController
{
public function index(): Response
{
throw new HttpException(
503,
'Service unavailable',
null,
['Retry-After' => '60']
);
}
}
?>
Результат выполнения кода:
Service unavailable
Пример
Давайте перехватим исключение и выведем его статус-код:
<?php
use Symfony\Component\HttpKernel\Exception\HttpException;
try {
throw new HttpException(403, 'Access denied');
} catch (HttpException $e) {
echo $e->getStatusCode();
}
?>
Результат выполнения кода:
403
Смотрите также
-
исключение
NotFoundHttpException,
которое представляет ошибку 404 -
исключение
AccessDeniedHttpException,
которое представляет ошибку 403 -
интерфейс
HttpExceptionInterface,
который реализует HTTP-исключение -
метод
getStatusCode,
который возвращает статус-код исключения