function it_returns_a_placeholder_response_if_it_fails(OperationRunner $decoratedRunner, Operation $operation, PlaceholderResponseResolver $placeholderResponseResolver) { $exception = new \Exception(); $decoratedRunner->run($operation)->willThrow($exception); $placeholderResponseResolver->createResponse($operation, $exception)->shouldBeCalled()->willReturn(''); $this->run($operation)->shouldBe(''); }
/** * {@inheritdoc} */ public function run(Operation $operation) { try { return $this->decoratedRunner->run($operation); } catch (\Exception $e) { // Handled later } catch (\Throwable $e) { // Handled later } if (!$this->catcherVoter->shouldCatchThrowable($e)) { throw $e; } $placeholder = $this->placeholderResponseResolver->createResponse($operation, $e); if (null !== $this->logger) { $this->logger->warning('An operation exception was replaced by a placeholder', ['operation' => $operation, 'placeholder' => $placeholder]); } return $placeholder; }