하석형 하석형 03-21
250321 하석형 금지어 Exception 관련 추가
@37361ded76071ce4d69979bcc0fbcfbc0fcc46e2
 
src/main/java/com/takensoft/common/exception/CustomPrhibtWordException.java (added)
+++ src/main/java/com/takensoft/common/exception/CustomPrhibtWordException.java
@@ -0,0 +1,33 @@
+package com.takensoft.common.exception;
+
+/**
+ * @author 하석형
+ * @since 2025.03.21
+ * @modification
+ *     since    |    author    | description
+ *  2025.03.21  |    하석형     | 최초 등록
+ *
+ * RuntimeException - 실행 중 발생하는 예외를 처리하는 기본 클래스
+ *
+ * 금칙어 포함 시 발생하는 예외
+ */
+public class CustomPrhibtWordException extends RuntimeException {
+
+    private String word; // 금지어
+
+    public CustomPrhibtWordException() {
+    }
+
+    public CustomPrhibtWordException(String message, String word) {
+        super(message);
+        this.word = word;
+    }
+
+    public CustomPrhibtWordException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public String getWord() {
+        return word;
+    }
+}(파일 끝에 줄바꿈 문자 없음)
src/main/java/com/takensoft/common/exception/GlobalExceptionHandler.java
--- src/main/java/com/takensoft/common/exception/GlobalExceptionHandler.java
+++ src/main/java/com/takensoft/common/exception/GlobalExceptionHandler.java
@@ -23,7 +23,7 @@
  *     since    |    author    | description
  *  2025.01.22  |  takensoft   | 최초 등록
  *  2025.03.12  |    하석형     | handleCustomCodeDuplicationException, handleCustomDataDuplicationException 추가
- *  2025.03.20  |    하석형     | handleFileSizeLimitExceededException, CustomFileUploadFailException 추가
+ *  2025.03.21  |    하석형     | handleFileSizeLimitExceededException, handleCustomFileUploadFailException, handleCustomPrhibtWordException 추가
  *
  * 스프링 MVC 컨트롤러에서 발생하는 예외를 처리하는 공통 클래스
  */
@@ -295,6 +295,18 @@
     }
 
     /**
+     * @param cpwe - CustomPrhibtWordException 예외 객체
+     * @return CustomPrhibtWordException 대한 HTTP 응답
+     *
+     * CustomPrhibtWordException 발생한 경우
+     */
+    @ExceptionHandler(CustomPrhibtWordException.class)
+    public ResponseEntity<?> handleCustomPrhibtWordException(CustomPrhibtWordException cpwe) {
+        logError(cpwe);
+        return resUtil.errorRes(MessageCode.COMMON_PROHIBITION_WORD, "\n* " + cpwe.getWord());
+    }
+
+    /**
      * @param e - Exception 예외 객체
      * @return 기타 예외에 대한 HTTP 응답
      *
src/main/java/com/takensoft/common/message/MessageCode.java
--- src/main/java/com/takensoft/common/message/MessageCode.java
+++ src/main/java/com/takensoft/common/message/MessageCode.java
@@ -10,6 +10,7 @@
  * @modification
  *     since    |    author    | description
  *  2025.01.22  |  takensoft   | 최초 등록
+ *  2025.03.21  |    하석형     | FILE_UPLOAD_FAIL, COMMON_PROHIBITION_WORD 추가
  *
  * 시스템에서 발생할 수 있는 코드 메시지들을 정의
  */
@@ -30,6 +31,7 @@
     COMMON_PAYLOAD_TOO_LARGE("common.payload_too_large",HttpStatus.PAYLOAD_TOO_LARGE), //파일 용량 초과 시
     COMMON_DUPLICATION_CODE("common.duplication_code",HttpStatus.INTERNAL_SERVER_ERROR), //중복 코드
     COMMON_DUPLICATION_DATA("common.duplication_data",HttpStatus.INTERNAL_SERVER_ERROR), //중복 데이터
+    COMMON_PROHIBITION_WORD("common.prohibition_word",HttpStatus.INTERNAL_SERVER_ERROR), //금지어 사용 시
 
     //네트워크 관련
     NETWORK_UNKNOWN_HOST("network.unknown_host", HttpStatus.BAD_REQUEST), // 알 수 없는 호스트
src/main/java/com/takensoft/common/util/ResponseUtil.java
--- src/main/java/com/takensoft/common/util/ResponseUtil.java
+++ src/main/java/com/takensoft/common/util/ResponseUtil.java
@@ -19,6 +19,7 @@
  * @modification
  *     since    |    author    | description
  *  2025.01.22  |  takensoft   | 최초 등록
+ *  2025.03.21  |    하석형     | 에러 응답 추가 메세지 추가
  *
  * HTTP 응답 처리를 위한 유틸리티
  */
@@ -87,10 +88,21 @@
      * 에러 응답 생성
      */
     public ResponseEntity<?> errorRes(MessageCode messageCode) {
+        return errorRes(messageCode, "");
+    }
+
+    /**
+     * @param messageCode - 응답 메시지 코드
+     * @param addMessage  - 추가 메시지
+     * @return 에러 응답 결과
+     *
+     * 에러 응답 생성
+     */
+    public ResponseEntity<?> errorRes(MessageCode messageCode, String addMessage) {
         ResponseData responseData = new ResponseData();
                      responseData.setStatus(messageCode.getStatus().value());
                      responseData.setStatusText(messageCode.getStatus());
-                     responseData.setMessage(getMessage(messageCode));
+                     responseData.setMessage(getMessage(messageCode) + (addMessage != null ? addMessage : ""));
         return new ResponseEntity<>(responseData, createHeaders(), messageCode.getStatus());
     }
 }
src/main/resources/message/messages_en.yml
--- src/main/resources/message/messages_en.yml
+++ src/main/resources/message/messages_en.yml
@@ -13,6 +13,7 @@
   payload_too_large : "File size limit exceeded."
   duplication_code: "This code already exists."
   duplication_data: "This data already exists."
+  prohibition_word: "Contains prohibited words."
 
 
 # 네트워크 관련
src/main/resources/message/messages_ko.yml
--- src/main/resources/message/messages_ko.yml
+++ src/main/resources/message/messages_ko.yml
@@ -13,6 +13,7 @@
   payload_too_large: "파일 용량 제한을 초과했습니다."
   duplication_code: "이미 존재하는 코드입니다."
   duplication_data: "이미 존재하는 정보입니다."
+  prohibition_word: "금지어가 포함되어 있습니다."
 
 # 네트워크 관련
 network:
Add a comment
List