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

Класс ErrorDetailsStamp

Класс ErrorDetailsStamp представляет собой штамп (stamp), который добавляется к конверту сообщения при возникновении ошибки во время обработки асинхронного сообщения. Он содержит сериализованную информацию об исключении: класс ошибки, сообщение и код. Этот штамп используется для логирования и повторной обработки сбойных сообщений.

Синтаксис

<?php namespace Symfony\Component\Messenger\Stamp; class ErrorDetailsStamp implements StampInterface { public function __construct( string $exceptionClass, int|string $exceptionCode, string $exceptionMessage, ?FlattenException $flattenedException = null ) { } public function getExceptionClass(): string { } public function getExceptionCode(): int|string { } public function getExceptionMessage(): string { } public function getFlattenedException(): ?FlattenException { } } ?>

Пример

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

<?php namespace App\Message; use Symfony\Component\Messenger\Envelope; use Symfony\Component\Messenger\Stamp\ErrorDetailsStamp; use Symfony\Component\Messenger\Stamp\ReceivedStamp; class ErrorHandler { public function handle(Envelope $envelope): void { $stamp = new ErrorDetailsStamp( \RuntimeException::class, 500, 'Something went wrong' ); $envelope = $envelope->with($stamp); $error = $envelope->last(ErrorDetailsStamp::class); echo $error->getExceptionClass(); echo "\n"; echo $error->getExceptionCode(); echo "\n"; echo $error->getExceptionMessage(); } } ?>

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

RuntimeException 500 "Something went wrong"

Пример

Давайте получим штамп ErrorDetailsStamp из конверта, который был создан при ошибке в очереди:

<?php namespace App\Message; use Symfony\Component\Messenger\Envelope; use Symfony\Component\Messenger\Stamp\ErrorDetailsStamp; class MessageConsumer { public function consume(Envelope $envelope): void { $errorStamp = $envelope->last(ErrorDetailsStamp::class); if ($errorStamp !== null) { echo 'Error class: ' . $errorStamp->getExceptionClass() . "\n"; echo 'Error message: ' . $errorStamp->getExceptionMessage() . "\n"; echo 'Error code: ' . $errorStamp->getExceptionCode() . "\n"; } else { echo 'No error details found'; } } } ?>

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

"Error class: RuntimeException" "Error message: Something went wrong" "Error code: 500"

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

  • класс Envelope,
    который представляет конверт сообщения
  • метод last,
    который возвращает последний штамп указанного типа
  • класс HandlerFailedException,
    который выбрасывается при ошибке обработчика
  • класс RedeliveryStamp,
    который хранит информацию о повторной доставке
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить