fix duplicate key exception
diff --git a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/apidestination/ApiDestinationService.java b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/apidestination/ApiDestinationService.java
index 19968fd..e14509c 100644
--- a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/apidestination/ApiDestinationService.java
+++ b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/apidestination/ApiDestinationService.java
@@ -30,6 +30,7 @@
 import org.apache.rocketmq.eventbridge.domain.repository.ApiDestinationRepository;
 import org.apache.rocketmq.eventbridge.exception.EventBridgeException;
 import org.apache.rocketmq.eventbridge.tools.NextTokenUtil;
+import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
@@ -63,9 +64,14 @@
                 ApiDestinationCountExceedLimit);
         checkHttpApiParameters(eventApiDestinationDTO.getApiParams());
         checkConnection(eventApiDestinationDTO);
-        final Boolean apiDestination = apiDestinationRepository.createApiDestination(eventApiDestinationDTO);
-        if (apiDestination) {
-            return eventApiDestinationDTO.getName();
+        try {
+            final Boolean apiDestination = apiDestinationRepository.createApiDestination(eventApiDestinationDTO);
+            if (apiDestination) {
+                return eventApiDestinationDTO.getName();
+            }
+        } catch (DuplicateKeyException duplicateKeyException) {
+            log.error("ApiDestinationService | createApiDestination | error => ", duplicateKeyException);
+            throw new EventBridgeException(EventBridgeErrorCode.ApiDestinationAlreadyExist, eventApiDestinationDTO.getName());
         }
         return null;
     }
diff --git a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/connection/ConnectionService.java b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/connection/ConnectionService.java
index cd44e0a..cc4286c 100644
--- a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/connection/ConnectionService.java
+++ b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/connection/ConnectionService.java
@@ -46,6 +46,7 @@
 import org.apache.rocketmq.eventbridge.domain.rpc.SecretManagerAPI;
 import org.apache.rocketmq.eventbridge.exception.EventBridgeException;
 import org.apache.rocketmq.eventbridge.tools.NextTokenUtil;
+import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
@@ -86,15 +87,20 @@
             checkAuthParameters(connectionDTO.getAuthParameters());
             connectionDTO.setAuthParameters(setSecretData(connectionDTO.getAuthParameters(), connectionDTO.getAccountId(), connectionDTO.getConnectionName()));
         }
-        if (connectionRepository.createConnection(connectionDTO)) {
-            if (NetworkTypeEnum.PRIVATE_NETWORK.getNetworkType().equals(connectionDTO.getNetworkParameters().getNetworkType())) {
-                List<ConnectionDTO> connection = getConnection(connectionDTO.getAccountId(), connectionDTO.getConnectionName());
-                if (!CollectionUtils.isEmpty(connection)) {
-                    NetworkParameters networkParameters = connectionDTO.getNetworkParameters();
-                    networkServiceAPI.createPrivateNetwork(connectionDTO.getAccountId(), Integer.toString(connection.get(0).getId()), networkParameters.getVpcId(), networkParameters.getVswitcheId(), networkParameters.getSecurityGroupId());
+        try {
+            if (connectionRepository.createConnection(connectionDTO)) {
+                if (NetworkTypeEnum.PRIVATE_NETWORK.getNetworkType().equals(connectionDTO.getNetworkParameters().getNetworkType())) {
+                    List<ConnectionDTO> connection = getConnection(connectionDTO.getAccountId(), connectionDTO.getConnectionName());
+                    if (!CollectionUtils.isEmpty(connection)) {
+                        NetworkParameters networkParameters = connectionDTO.getNetworkParameters();
+                        networkServiceAPI.createPrivateNetwork(connectionDTO.getAccountId(), Integer.toString(connection.get(0).getId()), networkParameters.getVpcId(), networkParameters.getVswitcheId(), networkParameters.getSecurityGroupId());
+                    }
                 }
+                return connectionDTO.getConnectionName();
             }
-            return connectionDTO.getConnectionName();
+        } catch (DuplicateKeyException duplicateKeyException) {
+            log.error("ConnectionService | createConnection | error => ", duplicateKeyException);
+            throw new EventBridgeException(EventBridgeErrorCode.ConnectionAlreadyExist, connectionDTO.getConnectionName());
         }
         return null;
     }