diff --git a/build.gradle b/build.gradle index d89f850..20f0d52 100644 --- a/build.gradle +++ b/build.gradle @@ -24,10 +24,10 @@ repositories { } dependencies { - implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + //implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' - runtimeOnly 'com.mysql:mysql-connector-j' + //runtimeOnly 'com.mysql:mysql-connector-j' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' diff --git a/src/main/java/com/example/week2/builder/App1.java b/src/main/java/com/example/week2/builder/App1.java index b5f9553..168dde0 100644 --- a/src/main/java/com/example/week2/builder/App1.java +++ b/src/main/java/com/example/week2/builder/App1.java @@ -1,8 +1,14 @@ package com.example.week2.builder; -public class App1 { +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); 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..f3b5b9c 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()); // RuntimeException은 string을 받아 단순 출력 -> 커스텀 errorCode를 전달 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..ce38a3e 100644 --- a/src/main/java/com/example/week2/exception/ErrorCode.java +++ b/src/main/java/com/example/week2/exception/ErrorCode.java @@ -8,7 +8,8 @@ @AllArgsConstructor public enum ErrorCode { - INVALID_REQUEST(HttpStatus.BAD_REQUEST, "잘못된 요청이 들어왔습니다"),; + INVALID_REQUEST(HttpStatus.BAD_REQUEST, "잘못된 요청이 들어왔습니다"), + SEJONG_UNIV(HttpStatus.BAD_GATEWAY, "출력하고 싶은 메시지"); private final HttpStatus status; diff --git a/src/main/java/com/example/week2/exception/ExceptionController.java b/src/main/java/com/example/week2/exception/ExceptionController.java index 859ce8e..4125cc9 100644 --- a/src/main/java/com/example/week2/exception/ExceptionController.java +++ b/src/main/java/com/example/week2/exception/ExceptionController.java @@ -21,4 +21,6 @@ public void throwIllegalArgumentException() { throw new IllegalArgumentException(); } + @GetMapping("/custom") + public void throwCustomException() {throw new CustomException(ErrorCode.INVALID_REQUEST);} } diff --git a/src/main/java/com/example/week2/exception/GlobalExceptionHandler.java b/src/main/java/com/example/week2/exception/GlobalExceptionHandler.java index 91a694e..fccd681 100644 --- a/src/main/java/com/example/week2/exception/GlobalExceptionHandler.java +++ b/src/main/java/com/example/week2/exception/GlobalExceptionHandler.java @@ -1,6 +1,7 @@ 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; @@ -19,4 +20,17 @@ 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); + } } diff --git a/src/main/java/com/example/week2/exception/GlobalExceptionHandler2.java b/src/main/java/com/example/week2/exception/GlobalExceptionHandler2.java index 3173af8..715ab7d 100644 --- a/src/main/java/com/example/week2/exception/GlobalExceptionHandler2.java +++ b/src/main/java/com/example/week2/exception/GlobalExceptionHandler2.java @@ -4,11 +4,11 @@ import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; -@ControllerAdvice +@ControllerAdvice //-> 에러를 잡아서 View를 반환 @Slf4j public class GlobalExceptionHandler2 { - @ExceptionHandler(IllegalArgumentException.class) + @ExceptionHandler(IllegalArgumentException.class) // -> IllegalArgumentException이 발생하면 얘가 잡아서 처리 public String handleIllegalArgumentException() { log.error("IllegalArgumentException 발생"); return "error";