setFailWorkflowExceptionTypes do not work to DynamicWorkflow

I register my dynamic workflow with WorkflowImplementationOptions.failWorkflowExceptionTypes.
But the workflow did not fail when the exception type occurs.

The code to reproduce this problem are as follows:

package com.examples.myflows;

import com.examples.TestTemporalServer;
import io.temporal.client.*;
import io.temporal.common.converter.EncodedValues;
import io.temporal.serviceclient.WorkflowServiceStubs;
import io.temporal.worker.Worker;
import io.temporal.worker.WorkerFactory;
import io.temporal.worker.WorkflowImplementationOptions;
import io.temporal.workflow.DynamicWorkflow;
import io.temporal.workflow.WorkflowInterface;
import io.temporal.workflow.WorkflowMethod;

public class TestFailedWorkflowExceptionTypes {
    private static final String TASK_QUEUE = "default";
    private static final String COMMON_WORKFLOW_ID = "ThrowExceptionWorkflow";
    private static final String DYNAMIC_WORKFLOW_ID = "ThrowExceptionDynamicWorkflow";

    @WorkflowInterface
    public interface ThrowExceptionWorkflow {
        @WorkflowMethod
        void execute();
    }

    public static class ThrowExceptionWorkflowImpl implements ThrowExceptionWorkflow {
        @Override
        public void execute() {
            throw new RuntimeException("xxx");
        }
    }

    public static class ThrowExceptionDynamicWorkflow implements DynamicWorkflow {
        @Override
        public Object execute(EncodedValues args) {
            throw new RuntimeException("xxx");
        }
    }

    public static void main(String[] args) {
        WorkflowServiceStubs service = TestTemporalServer.defaultStub();
        WorkflowClientOptions clientOptions = WorkflowClientOptions.newBuilder()
                .setNamespace("test")
                .build();
        WorkflowClient client = WorkflowClient.newInstance(service, clientOptions);
        WorkerFactory factory = WorkerFactory.newInstance(client);
        Worker worker = factory.newWorker(TASK_QUEUE);

        WorkflowImplementationOptions workflowImplementationOptions = WorkflowImplementationOptions.newBuilder()
                .setFailWorkflowExceptionTypes(RuntimeException.class)
                .build();

        worker.registerWorkflowImplementationTypes(workflowImplementationOptions, ThrowExceptionWorkflowImpl.class, ThrowExceptionDynamicWorkflow.class);
        factory.start();


        //common
        try {
            WorkflowOptions options = WorkflowOptions.newBuilder()
                    .setTaskQueue(TASK_QUEUE)
                    .setWorkflowId(COMMON_WORKFLOW_ID)
                    .build();
            client.newWorkflowStub(ThrowExceptionWorkflow.class, options).execute();
        } catch (WorkflowException e) {
            System.out.println("COMMON:" + e.getCause().getMessage());
        }
        //dynamic
        WorkflowOptions workflowOptions =
                WorkflowOptions.newBuilder().setWorkflowId(DYNAMIC_WORKFLOW_ID).setTaskQueue(TASK_QUEUE).build();
        WorkflowStub workflowStub = client.newUntypedWorkflowStub("abc", workflowOptions);

        try {
            workflowStub.start();
            workflowStub.getResult(Void.class);
        } catch (WorkflowException e) {
            System.out.println("DYNAMIC:" + e.getMessage());
        }
    }


}

The common workflow fails but dynamic workflow.
My Temporal Server version is 1.20.3 , Java SDK version is 1.22.3.

Thank you @zuodimiaoyun

This is a know bug DynamicWorkflow not taking in account WorkflowImplementationOptions · Issue #1241 · temporalio/sdk-java · GitHub , feel free to add your test or any comment there.

Throwing an ApplicationFailure should work for now, as a workaround.

Thank you
Antonio