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

Исключение NotEncodableValueException

Исключение NotEncodableValueException относится к семейству исключений компонента Serializer. Оно выбрасывается в момент, когда значение невозможно преобразовать в требуемый формат или прочитать из него данные. Чаще всего это связано с ошибками в JSON, XML, CSV или YAML. Первым параметром передаётся текст сообщения об ошибке. Исключение наследуется от UnexpectedValueException, поэтому его можно перехватывать стандартным блоком catch.

Синтаксис

<?php namespace Symfony\Component\Serializer\Exception; class NotEncodableValueException extends UnexpectedValueException { public function __construct(string $message = '', int $code = 0, ?Throwable $previous = null) { } } ?>

Пример

Давайте попробуем раскодировать некорректную JSON-строку через Serializer и перехватим исключение:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Serializer\SerializerInterface; use Symfony\Component\Serializer\Exception\NotEncodableValueException; class ArticleController extends AbstractController { public function index(SerializerInterface $serializer): Response { $json = '{"name": "abcde"'; try { $res = $serializer->decode($json, 'json'); } catch (NotEncodableValueException $e) { $res = 'Decode error: ' . $e->getMessage(); } return new Response($res); } } ?>

Результат выполнения кода:

Decode error: Syntax error

Пример

Давайте закодируем массив в формат, который не поддерживается сериализатором:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Serializer\SerializerInterface; use Symfony\Component\Serializer\Exception\NotEncodableValueException; class ArticleController extends AbstractController { public function index(SerializerInterface $serializer): Response { $data = ['a', 'b', 'c']; try { $res = $serializer->encode($data, 'unknown_format'); } catch (NotEncodableValueException $e) { $res = 'Encode error: ' . $e->getMessage(); } return new Response($res); } } ?>

Результат выполнения кода:

Encode error: Serializer for "unknown_format" not found

Пример

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

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Serializer\SerializerInterface; class ArticleController extends AbstractController { public function index(SerializerInterface $serializer): Response { $json = '{"name": "abcde", "age": 25}'; $res = $serializer->decode($json, 'json'); return new Response($res['name']); } } ?>

Результат выполнения кода:

abcde

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

  • исключение UnprocessableEntityHttpException,
    которое возвращает код 422 при неверных данных
  • исключение BadRequestHttpException,
    которое сигнализирует о некорректном запросе
  • исключение InvalidArgumentException,
    которое выбрасывается при неверных аргументах
  • исключение ValidationFailedException,
    которое возникает при провале валидации данных
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить