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

Исключение ItemNotFoundException

Исключение ItemNotFoundException относится к группе исключений, которые выбрасываются при отсутствии нужного элемента в хранилище, кэше или другом источнике данных. Обычно оно используется внутри сервисов и репозиториев, когда по заданному идентификатору или ключу не удаётся найти запись. Первым параметром передаётся сообщение об ошибке, вторым - код исключения, третьим - предыдущее исключение.

Синтаксис

new ItemNotFoundException(string $message = '', int $code = 0, ?Throwable $previous = null)

Пример

Давайте выбросим исключение ItemNotFoundException, если элемент не найден в массиве:

<?php namespace AppService; use SymfonyComponentUidExceptionItemNotFoundException; class ItemService { public function findItem(array $items, string $id): string { if (!isset($items[$id])) { throw new ItemNotFoundException('Item "'.$id.'" not found'); } return $items[$id]; } } ?>

Результат выполнения кода для существующего ключа:

"abcde"

Пример

Давайте обработаем исключение ItemNotFoundException в контроллере и вернём корректный ответ:

<?php namespace AppController; use AppServiceItemService; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; use SymfonyComponentUidExceptionItemNotFoundException; class ItemController extends AbstractController { #[Route('/item/{id}', name: 'item_show')] public function show(string $id, ItemService $service): Response { try { $item = $service->findItem(['a' => 'abcde'], $id); return new Response($item); } catch (ItemNotFoundException $e) { return new Response($e->getMessage(), 404); } } } ?>

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

abcde

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

Item "x" not found

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

  • исключение NotFoundHttpException,
    которое возвращает ответ 404
  • исключение NoResultException,
    которое выбрасывается Doctrine при отсутствии результата
  • исключение EntityNotFoundException,
    которое сигнализирует об отсутствии сущности
  • класс FlattenException,
    который используется для отображения ошибок
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить