Метод 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,
который возвращает сообщение исключения