diff --git a/exception/src/main/java/hello/exception/api/ApiExceptionV2Controller.java b/exception/src/main/java/hello/exception/api/ApiExceptionV2Controller.java new file mode 100644 index 0000000..58c86b3 --- /dev/null +++ b/exception/src/main/java/hello/exception/api/ApiExceptionV2Controller.java @@ -0,0 +1,60 @@ +package hello.exception.api; + +import hello.exception.UserException; +import hello.exception.exhandler.ErrorResult; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +@Slf4j +@RestController +public class ApiExceptionV2Controller { + + @ResponseStatus(HttpStatus.BAD_REQUEST) + @ExceptionHandler(IllegalArgumentException.class) + public ErrorResult illegalExHandle(IllegalArgumentException e) { + log.error("[exceptionHandle] ex", e); + return new ErrorResult("BAD", e.getMessage()); + } + + @ExceptionHandler + public ResponseEntity userExHandle(UserException e) { + log.error("[exceptionHandle] ex", e); + ErrorResult errorResult = new ErrorResult("USER-EX", e.getMessage()); + return new ResponseEntity<>(errorResult, HttpStatus.BAD_REQUEST); + } + + @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) + @ExceptionHandler + public ErrorResult exHandle(Exception e) { + log.error("[exceptionHandle] ex", e); + return new ErrorResult("EX", "내부 오류"); + } + + @GetMapping("/api2/members/{id}") + public MemberDto getMember(@PathVariable("id") String id) { + if (id.equals("ex")) { + throw new RuntimeException("잘못된 사용자"); + } + + if (id.equals("bad")) { + throw new IllegalArgumentException("잘못된 입력 값"); + } + + if (id.equals("user-ex")) { + throw new UserException("사용자 오류"); + } + + return new MemberDto(id, "hello " + id); + } + + @Data + @AllArgsConstructor + static class MemberDto { + private String memberId; + private String name; + } +} \ No newline at end of file diff --git a/exception/src/main/java/hello/exception/exhandler/ErrorResult.java b/exception/src/main/java/hello/exception/exhandler/ErrorResult.java new file mode 100644 index 0000000..cd3549c --- /dev/null +++ b/exception/src/main/java/hello/exception/exhandler/ErrorResult.java @@ -0,0 +1,11 @@ +package hello.exception.exhandler; + +import lombok.AllArgsConstructor; +import lombok.Data; + +@Data +@AllArgsConstructor +public class ErrorResult { + private String code; + private String message; +}