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

Метод getTrace класса FlattenException

Метод getTrace класса FlattenException возвращает массив шагов трассировки исключения. Этот массив содержит информацию о файлах, строках и функциях, которые привели к возникновению исключения. Метод не принимает параметров и возвращает массив, каждый элемент которого представляет собой отдельный шаг трассировки.

Синтаксис

public function getTrace(): array

Пример

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

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

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

[ [ 'file' => '/path/to/src/Controller/ArticleController.php', 'line' => 16, 'function' => 'index', 'class' => 'App\Controller\ArticleController', 'type' => '->' ], [ 'file' => '/path/to/vendor/symfony/http-kernel/HttpKernel.php', 'line' => 123, 'function' => 'call_user_func_array', 'args' => [] ] ]

Пример

Давайте выведем только имена функций из трассировки:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\ErrorHandler\Exception\FlattenException; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(): Response { try { throw new \Exception('Something went wrong'); } catch (\Exception $e) { $flattenException = FlattenException::createFromThrowable($e); $trace = $flattenException->getTrace(); $functions = array_map(function ($step) { return $step['function'] ?? 'unknown'; }, $trace); return new Response(implode(', ', $functions)); } } } ?>

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

"index, call_user_func_array, handleRaw, handle"

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

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