РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
532 of 1361 menu

Исключение GoneHttpException

Исключение GoneHttpException относится к семейству HTTP-исключений Symfony и соответствует статус-коду 410 Gone. Оно выбрасывается, когда запрошенный ресурс существовал раньше, но был окончательно удалён и больше не будет доступен. В отличие от ошибки 404, которая означает, что ресурс не найден, ошибка 410 явно сообщает клиенту, что ресурс удалён навсегда. Первым параметром конструктору передаётся сообщение об ошибке, вторым - предыдущее исключение, третьим - заголовки ответа.

Синтаксис

new GoneHttpException(message, previous, headers)

Пример

Давайте выбросим исключение GoneHttpException в контроллере, когда пользователь обращается к удалённой статье:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Exception\GoneHttpException; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article/{id}', name: 'article_show')] public function show(int $id): Response { if ($id === 1) { throw new GoneHttpException('This article has been deleted'); } return new Response('article ' . $id); } } ?>

Результат выполнения кода для адреса /article/1:

This article has been deleted

Пример

Давайте передадим в исключение дополнительные заголовки ответа:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Exception\GoneHttpException; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article/{id}', name: 'article_show')] public function show(int $id): Response { if ($id === 1) { throw new GoneHttpException( 'This article has been deleted', null, ['X-Deleted-At' => '2024-01-01'] ); } return new Response('article ' . $id); } } ?>

Результат выполнения кода для адреса /article/1:

This article has been deleted

Пример

Давайте перехватим исключение GoneHttpException и получим его статус-код через метод getStatusCode:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Exception\GoneHttpException; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article/{id}', name: 'article_show')] public function show(int $id): Response { try { if ($id === 1) { throw new GoneHttpException('This article has been deleted'); } return new Response('article ' . $id); } catch (GoneHttpException $e) { return new Response( $e->getMessage(), $e->getStatusCode() ); } } } ?>

Результат выполнения кода для адреса /article/1:

"This article has been deleted"

Смотрите также

  • исключение HttpException,
    которое является базовым для HTTP-исключений
  • исключение NotFoundHttpException,
    которое соответствует ошибке 404
  • метод getStatusCode,
    который возвращает статус-код исключения
  • метод getMessage,
    который возвращает сообщение исключения
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить