From 98ec4f90e9a0ad87dce83c08c43ae4cdd6ed600c Mon Sep 17 00:00:00 2001 From: rndnjsgud <00kwh@naver.com> Date: Mon, 24 Mar 2025 12:51:43 +0900 Subject: [PATCH] =?UTF-8?q?2=EC=A3=BC=EC=B0=A8=20=EC=8A=A4=ED=84=B0?= =?UTF-8?q?=EB=94=94=20=EB=82=B4=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/week2/builder/App1.java | 9 +++++++ .../week2/exception/CustomException.java | 2 +- .../example/week2/exception/ErrorCode.java | 4 ++-- .../week2/exception/ErrorResponse.java | 1 - .../week2/exception/ExceptionController.java | 3 +++ .../exception/GlobalExceptionHandler.java | 24 +++++++++++++++++++ 6 files changed, 39 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/example/week2/builder/App1.java b/src/main/java/com/example/week2/builder/App1.java index b5f9553..bb0a5b5 100644 --- a/src/main/java/com/example/week2/builder/App1.java +++ b/src/main/java/com/example/week2/builder/App1.java @@ -1,8 +1,17 @@ package com.example.week2.builder; +import com.example.week2.exception.CustomException; +import com.example.week2.exception.ErrorCode; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class App1 { + private static final Logger log = LoggerFactory.getLogger(App1.class); //@Slf4j 입력 시 자동 생성 + public static void main(String[] args) { + log.error("에러!"); + throw new CustomException(ErrorCode.INVALID_REQUEST); } } diff --git a/src/main/java/com/example/week2/exception/CustomException.java b/src/main/java/com/example/week2/exception/CustomException.java index 49fb605..a8615cb 100644 --- a/src/main/java/com/example/week2/exception/CustomException.java +++ b/src/main/java/com/example/week2/exception/CustomException.java @@ -8,7 +8,7 @@ public class CustomException extends RuntimeException{ private final ErrorCode errorCode; public CustomException(ErrorCode errorCode) { - super(errorCode.getMessage()); + super(errorCode.getMessage()); //에러 메세지 출력 this.errorCode = errorCode; } } diff --git a/src/main/java/com/example/week2/exception/ErrorCode.java b/src/main/java/com/example/week2/exception/ErrorCode.java index 4d28422..ec63747 100644 --- a/src/main/java/com/example/week2/exception/ErrorCode.java +++ b/src/main/java/com/example/week2/exception/ErrorCode.java @@ -8,8 +8,8 @@ @AllArgsConstructor public enum ErrorCode { - INVALID_REQUEST(HttpStatus.BAD_REQUEST, "잘못된 요청이 들어왔습니다"),; - + INVALID_REQUEST(HttpStatus.BAD_REQUEST, "잘못된 요청이 들어왔습니다"), + SEJONG_UNIV(HttpStatus.UNSUPPORTED_MEDIA_TYPE, "가나다라마바사"); //에러 타입과 에러메세지 형식 private final HttpStatus status; private final String message; diff --git a/src/main/java/com/example/week2/exception/ErrorResponse.java b/src/main/java/com/example/week2/exception/ErrorResponse.java index 91377ad..be6905a 100644 --- a/src/main/java/com/example/week2/exception/ErrorResponse.java +++ b/src/main/java/com/example/week2/exception/ErrorResponse.java @@ -8,7 +8,6 @@ @Builder @AllArgsConstructor public class ErrorResponse { - private ErrorCode errorCode; private String errorMessage; } diff --git a/src/main/java/com/example/week2/exception/ExceptionController.java b/src/main/java/com/example/week2/exception/ExceptionController.java index 859ce8e..8dcbc8b 100644 --- a/src/main/java/com/example/week2/exception/ExceptionController.java +++ b/src/main/java/com/example/week2/exception/ExceptionController.java @@ -21,4 +21,7 @@ public void throwIllegalArgumentException() { throw new IllegalArgumentException(); } + @GetMapping("/custom") + public void throwCustomException() {throw new CustomException(ErrorCode.SEJONG_UNIV);} + } diff --git a/src/main/java/com/example/week2/exception/GlobalExceptionHandler.java b/src/main/java/com/example/week2/exception/GlobalExceptionHandler.java index 91a694e..ab5c867 100644 --- a/src/main/java/com/example/week2/exception/GlobalExceptionHandler.java +++ b/src/main/java/com/example/week2/exception/GlobalExceptionHandler.java @@ -1,13 +1,21 @@ package com.example.week2.exception; import lombok.extern.slf4j.Slf4j; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; +import org.springframework.web.servlet.View; @RestControllerAdvice @Slf4j public class GlobalExceptionHandler { + private final View error; + + public GlobalExceptionHandler(View error) { + this.error = error; + } + @ExceptionHandler(NullPointerException.class) public String handleNullPointerException() { log.error("NullPointer Exception 처리 시작"); @@ -19,4 +27,20 @@ public String handleInternalError() { log.error("InternalError 처리 시작"); return "InternalError 핸들링"; } + + @ExceptionHandler(CustomException.class) + public ResponseEntity handleCustomException(CustomException e){ + log.error("CustomException 발생: {}", e.getMessage(), e); + + ErrorCode errorCode = e.getErrorCode(); + + ErrorResponse response = ErrorResponse.builder() + .errorCode(errorCode) + .errorMessage(errorCode.getMessage()) + .build(); + + return ResponseEntity.status(errorCode.getStatus()).body(response); + } + + }