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

Метод createFromThrowable

Метод createFromThrowable класса FlattenException преобразует любое исключение, реализующее Throwable, в плоский объект FlattenException. Первым параметром передаётся исходное исключение. Вторым необязательным параметром можно передать HTTP-код статуса, третьим - массив заголовков. Метод удобен для сериализации исключений и передачи их через HTTP в формате JSON.

Синтаксис

FlattenException::createFromThrowable(Throwable $exception, ?int $statusCode = null, array $headers = [])

Пример

Давайте создадим исключение и преобразуем его в объект FlattenException:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; use Symfony\Component\ErrorHandler\Exception\FlattenException; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(): Response { try { throw new \RuntimeException('article error'); } catch (\Throwable $e) { $flat = FlattenException::createFromThrowable($e); return new Response($flat->getMessage()); } } } ?>

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

"article error"

Пример

Давайте передадим HTTP-код статуса вторым параметром и выведем его через метод getStatusCode:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; use Symfony\Component\ErrorHandler\Exception\FlattenException; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(): Response { try { throw new \RuntimeException('article error'); } catch (\Throwable $e) { $flat = FlattenException::createFromThrowable($e, 500); return new Response((string) $flat->getStatusCode()); } } } ?>

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

"500"

Пример

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

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; use Symfony\Component\ErrorHandler\Exception\FlattenException; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(): Response { try { throw new \RuntimeException('article error'); } catch (\Throwable $e) { $flat = FlattenException::createFromThrowable( $e, 500, ['X-Custom' => 'abcde'] ); return new Response($flat->getHeaders()['X-Custom']); } } } ?>

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

"abcde"

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

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