/** * @param TaskWrapper $task * * @return Result * @throws Exception */ public function process(TaskWrapper $task) : Result { $resultValue = null; $isTaskSucceed = false; try { $resultValue = $task->process(); $isTaskSucceed = true; } catch (Exception $e) { throw $e; } finally { return new Result($task->getId(), $resultValue, $isTaskSucceed); } }