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

Исключение TransportExceptionInterface

Исключение TransportExceptionInterface относится к компоненту Messenger и выбрасывается, когда транспорт не может выполнить операцию: отправить сообщение в очередь, прочитать его или подтвердить обработку. Оно не содержит параметров, но реализует стандартный интерфейс Throwable и может быть перехвачено для повторной попытки или логирования сбоя.

Синтаксис

namespace Symfony\Component\Messenger\Exception; interface TransportExceptionInterface extends \Throwable { }

Пример

Давайте отправим сообщение через транспорт и перехватим исключение TransportExceptionInterface:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Messenger\MessageBusInterface; use Symfony\Component\Messenger\Exception\TransportExceptionInterface; class MessageController extends AbstractController { public function send(MessageBusInterface $bus): Response { try { $bus->dispatch(new \App\Message\ArticleMessage('article')); } catch (TransportExceptionInterface $e) { return new Response('transport error: ' . $e->getMessage()); } return new Response('sent'); } } ?>

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

"sent"

Пример

Давайте обработаем сообщение и перехватим ошибку транспорта при получении:

<?php namespace App\MessageHandler; use App\Message\ArticleMessage; use Symfony\Component\Messenger\Attribute\AsMessageHandler; use Symfony\Component\Messenger\Exception\TransportExceptionInterface; #[AsMessageHandler] class ArticleMessageHandler { public function __invoke(ArticleMessage $message): void { try { $text = $message->getText(); echo 'handled: ' . $text; } catch (TransportExceptionInterface $e) { echo 'transport error: ' . $e->getMessage(); } } } ?>

Результат выполнения кода для сообщения с текстом 'article':

"handled: article"

Пример

Давайте проверим, является ли исключение экземпляром TransportExceptionInterface, и выведем статус:

<?php use Symfony\Component\Messenger\Exception\TransportExceptionInterface; $e = new \RuntimeException('connection failed'); if ($e instanceof TransportExceptionInterface) { echo 'transport exception'; } else { echo 'other exception'; } ?>

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

"other exception"

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

Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить