@@ -52,6 +52,7 @@ public class TryExecutor extends RegularTaskExecutor<TryTask> {
5252 private final TaskExecutor <?> taskExecutor ;
5353 private final Optional <TaskExecutor <?>> catchTaskExecutor ;
5454 private final Optional <RetryExecutor > retryIntervalExecutor ;
55+ private final String errorVariable ;
5556
5657 public static class TryExecutorBuilder extends RegularTaskExecutorBuilder <TryTask > {
5758
@@ -61,6 +62,7 @@ public static class TryExecutorBuilder extends RegularTaskExecutorBuilder<TryTas
6162 private final TaskExecutor <?> taskExecutor ;
6263 private final Optional <TaskExecutor <?>> catchTaskExecutor ;
6364 private final Optional <RetryExecutor > retryIntervalExecutor ;
65+ private String errorVariable ;
6466
6567 protected TryExecutorBuilder (
6668 WorkflowMutablePosition position , TryTask task , WorkflowDefinition definition ) {
@@ -73,8 +75,8 @@ protected TryExecutorBuilder(
7375 TaskExecutorHelper .createExecutorList (position , task .getTry (), definition );
7476 TryTaskCatch catchTask = task .getCatch ();
7577 if (catchTask != null ) {
78+ this .errorVariable = catchTask .getAs ();
7679 List <TaskItem > catchTaskDo = catchTask .getDo ();
77-
7880 this .catchTaskExecutor =
7981 catchTaskDo != null && !catchTaskDo .isEmpty ()
8082 ? Optional .of (
@@ -144,6 +146,7 @@ protected TryExecutor(TryExecutorBuilder builder) {
144146 this .taskExecutor = builder .taskExecutor ;
145147 this .catchTaskExecutor = builder .catchTaskExecutor ;
146148 this .retryIntervalExecutor = builder .retryIntervalExecutor ;
149+ this .errorVariable = builder .errorVariable ;
147150 }
148151
149152 @ Override
@@ -171,6 +174,9 @@ private CompletableFuture<WorkflowModel> handleException(
171174 if (errorFilter .map (f -> f .test (exception .getWorkflowError ())).orElse (true )
172175 && WorkflowUtils .whenExceptTest (
173176 whenFilter , exceptFilter , workflow , taskContext , taskContext .rawOutput ())) {
177+ if (errorVariable != null ) {
178+ taskContext .variables ().put (errorVariable , exception .getWorkflowError ());
179+ }
174180 if (catchTaskExecutor .isPresent ()) {
175181 completable =
176182 completable .thenCompose (
0 commit comments