Класс FlattenException
Класс FlattenException представляет исключение
в виде плоской структуры данных: массива или строки.
Он используется в Symfony для передачи информации
об ошибке через границы процессов, при сериализации
в JSON и для логирования. Класс содержит методы
для получения кода статуса, сообщения, трассировки
и заголовков исходного исключения.
Синтаксис
use Symfony\Component\ErrorHandler\Exception\FlattenException;
$flatten = FlattenException::createFromThrowable($exception);
Пример
Давайте создадим объект FlattenException из
обычного исключения и получим его сообщение и код статуса:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\ErrorHandler\Exception\FlattenException;
class ErrorController extends AbstractController
{
public function show(): Response
{
$exception = new \RuntimeException('Something went wrong', 500);
$flatten = FlattenException::createFromThrowable($exception);
echo $flatten->getMessage();
echo $flatten->getStatusCode();
}
}
?>
Результат выполнения кода:
"Something went wrong"
500
Пример
Давайте получим трассировку стека в виде строки:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\ErrorHandler\Exception\FlattenException;
class ErrorController extends AbstractController
{
public function trace(): Response
{
$exception = new \InvalidArgumentException('Invalid value');
$flatten = FlattenException::createFromThrowable($exception);
echo $flatten->getTraceAsString();
}
}
?>
Результат выполнения кода:
"#0 /var/www/src/Controller/ErrorController.php(15): ..."
Пример
Давайте получим все данные исключения в виде массива
с помощью метода toArray:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\ErrorHandler\Exception\FlattenException;
class ErrorController extends AbstractController
{
public function toArray(): Response
{
$exception = new \RuntimeException('Something went wrong', 500);
$flatten = FlattenException::createFromThrowable($exception);
$res = $flatten->toArray();
echo json_encode($res);
}
}
?>
Результат выполнения кода:
{"message":"Something went wrong","code":0,"status":500,"trace":[...]}
Смотрите также
-
метод
createFromThrowable,
который создаёт FlattenException из исключения -
метод
getStatusCode,
который возвращает HTTP-код ошибки -
метод
getMessage,
который возвращает сообщение исключения -
метод
getTrace,
который возвращает трассировку стека