Обработка исключений внутри конвейераPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Обработка исключений внутри конвейера

Сообщение Anonymous »

Я новичок в Laravel и сейчас работаю с конвейерами. Насколько я знаю, если на одном этапе конвейера произойдет сбой, на этом этапе остановится весь конвейер. Это именно то, чего я хочу, поэтому меня это устраивает.
Но я хочу обработать данное исключение на неудачном этапе. И теперь вопрос, как? Я ничего не могу найти по этому поводу.
Поэтому мой код для конвейера выглядит так (например):
final readonly class CreateInboundPlanPipeline
{
public function __invoke(DataContainer $container, Closure $next): DataContainer
{
//Init Normalizer
$normalizer = new FBAInboundNormalizer();

//Do something with $container
$items = json_decode($container->__get('initialrequest')->input('items'));
$response = $normalizer->createInboundPlan($items, $container->__get('initialrequest'));

if($response['success']){
$extendContainer = $container;
$extendContainer->inboundplanid = $response["inboundPlanId"];
$extendContainer->currentOperationId = $response["operationId"];
}else{
throw new \Exception($response["message"]);
}

return $next($extendContainer);
}
}

public function handle(): void
{
$filledContainer = app(Pipeline::class)
->send($this->container)
->through([
CreateInboundPlanPipeline::class,
])
->then(function(){
//Action after Pipeline
//e.g. fill a model or smth
});
}

Например. если «CreateInboundPlanPipeline» выдает исключение, как я могу его перехватить и обработать?
Я нашел функцию «handleException» внутри конвейера, правильно ли это?
Как это будет выглядеть?
$filledContainer = app(Pipeline::class)
->send($this->container)
->through([
CreateInboundPlanPipeline::class,
])
->then(function(){
//Action after Pipeline
//e.g. fill a model or smth
})
->handleException(function(){
//Handle Exception here
});


Подробнее здесь: https://stackoverflow.com/questions/793 ... e-pipeline
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»