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

Исключение NotFoundHttpException

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

Синтаксис

throw new NotFoundHttpException($message, $previous, $code);

Пример

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

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article/{id}', name: 'article_show')] public function show(int $id): Response { $article = $this->findArticle($id); if ($article === null) { throw new NotFoundHttpException('Article not found'); } return new Response($article); } private function findArticle(int $id): ?string { $articles = [1 => 'article 1', 2 => 'article 2', 3 => 'article 3']; return $articles[$id] ?? null; } } ?>

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

Article not found

Пример

Давайте передадим предыдущее исключение и код ошибки:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/user/{name}', name: 'article_user')] public function user(string $name): Response { try { $user = $this->findUser($name); } catch (\Exception $e) { throw new NotFoundHttpException('User not found', $e, 404); } return new Response($user); } private function findUser(string $name): string { throw new \Exception('Database error'); } } ?>

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

"User not found"

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

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