From c2ba88f2f2cc11ecae82a55059f6b0c2ac29e204 Mon Sep 17 00:00:00 2001 From: IdionKim Date: Fri, 27 Mar 2020 16:12:34 +0900 Subject: [PATCH] =?UTF-8?q?[#109]=20Refactor:=20Custom=20Exception=20?= =?UTF-8?q?=EA=B5=AC=EC=A1=B0=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 최상위 CustomException인 BusinessException을 생성하고 그 하위 Exception으로 구조를 변경하였습니다. - User 생성시 validation에 실패하면 발생하는 Exception을 생성하였습니다. --- .../codesquad/team1/signup/api/ApiUserController.java | 3 ++- .../team1/signup/common/constants/ErrorMessages.java | 2 +- .../team1/signup/common/exception/BusinessException.java | 9 +++++++++ .../signup/common/exception/ForbiddenException.java | 3 ++- .../signup/common/exception/UnauthorizedException.java | 3 ++- .../exception/UserCreateParameterInvalidException.java | 9 +++++++++ .../com/codesquad/team1/signup/domain/user/User.java | 3 ++- 7 files changed, 27 insertions(+), 5 deletions(-) create mode 100644 BE/src/main/java/com/codesquad/team1/signup/common/exception/BusinessException.java create mode 100644 BE/src/main/java/com/codesquad/team1/signup/common/exception/UserCreateParameterInvalidException.java diff --git a/BE/src/main/java/com/codesquad/team1/signup/api/ApiUserController.java b/BE/src/main/java/com/codesquad/team1/signup/api/ApiUserController.java index 8cb48a1..4c8d314 100644 --- a/BE/src/main/java/com/codesquad/team1/signup/api/ApiUserController.java +++ b/BE/src/main/java/com/codesquad/team1/signup/api/ApiUserController.java @@ -1,6 +1,7 @@ package com.codesquad.team1.signup.api; import com.codesquad.team1.signup.common.constants.ErrorMessages; +import com.codesquad.team1.signup.common.exception.UserCreateParameterInvalidException; import com.codesquad.team1.signup.common.response.ErrorResponse; import com.codesquad.team1.signup.common.exception.ForbiddenException; import com.codesquad.team1.signup.common.exception.UnauthorizedException; @@ -59,7 +60,7 @@ public User createUser(@RequestBody User user) { if (user.validate()) { return userRepository.save(user); } - throw new InvalidParameterException(ErrorMessages.INVALID_PARAMETER); + throw new UserCreateParameterInvalidException(ErrorMessages.USER_CREATE_PARAMETER_INVALID); } @PostMapping("/login") diff --git a/BE/src/main/java/com/codesquad/team1/signup/common/constants/ErrorMessages.java b/BE/src/main/java/com/codesquad/team1/signup/common/constants/ErrorMessages.java index 1c4c405..31c5061 100644 --- a/BE/src/main/java/com/codesquad/team1/signup/common/constants/ErrorMessages.java +++ b/BE/src/main/java/com/codesquad/team1/signup/common/constants/ErrorMessages.java @@ -4,7 +4,7 @@ public class ErrorMessages { public static final String FORBIDDEN = "접근 권한이 없습니다."; public static final String UNAUTHORIZED = "로그인이 필요합니다."; - public static final String INVALID_PARAMETER = "Validation을 통과하지 못한 값 입니다."; + public static final String USER_CREATE_PARAMETER_INVALID = "Validation을 통과하지 못한 값 입니다."; private ErrorMessages() {} } diff --git a/BE/src/main/java/com/codesquad/team1/signup/common/exception/BusinessException.java b/BE/src/main/java/com/codesquad/team1/signup/common/exception/BusinessException.java new file mode 100644 index 0000000..5461afd --- /dev/null +++ b/BE/src/main/java/com/codesquad/team1/signup/common/exception/BusinessException.java @@ -0,0 +1,9 @@ +package com.codesquad.team1.signup.common.exception; + +public class BusinessException extends RuntimeException { + + public BusinessException(String message) { + super(message); + } + +} diff --git a/BE/src/main/java/com/codesquad/team1/signup/common/exception/ForbiddenException.java b/BE/src/main/java/com/codesquad/team1/signup/common/exception/ForbiddenException.java index e00137e..0c92f4a 100644 --- a/BE/src/main/java/com/codesquad/team1/signup/common/exception/ForbiddenException.java +++ b/BE/src/main/java/com/codesquad/team1/signup/common/exception/ForbiddenException.java @@ -1,8 +1,9 @@ package com.codesquad.team1.signup.common.exception; -public class ForbiddenException extends RuntimeException { +public class ForbiddenException extends BusinessException { public ForbiddenException(String message) { super(message); } + } diff --git a/BE/src/main/java/com/codesquad/team1/signup/common/exception/UnauthorizedException.java b/BE/src/main/java/com/codesquad/team1/signup/common/exception/UnauthorizedException.java index c81f6f3..ed47280 100644 --- a/BE/src/main/java/com/codesquad/team1/signup/common/exception/UnauthorizedException.java +++ b/BE/src/main/java/com/codesquad/team1/signup/common/exception/UnauthorizedException.java @@ -1,8 +1,9 @@ package com.codesquad.team1.signup.common.exception; -public class UnauthorizedException extends RuntimeException { +public class UnauthorizedException extends BusinessException { public UnauthorizedException(String message) { super(message); } + } diff --git a/BE/src/main/java/com/codesquad/team1/signup/common/exception/UserCreateParameterInvalidException.java b/BE/src/main/java/com/codesquad/team1/signup/common/exception/UserCreateParameterInvalidException.java new file mode 100644 index 0000000..0a6cc19 --- /dev/null +++ b/BE/src/main/java/com/codesquad/team1/signup/common/exception/UserCreateParameterInvalidException.java @@ -0,0 +1,9 @@ +package com.codesquad.team1.signup.common.exception; + +public class UserCreateParameterInvalidException extends BusinessException { + + public UserCreateParameterInvalidException(String message) { + super(message); + } + +} diff --git a/BE/src/main/java/com/codesquad/team1/signup/domain/user/User.java b/BE/src/main/java/com/codesquad/team1/signup/domain/user/User.java index fbb1de0..d92fe4f 100644 --- a/BE/src/main/java/com/codesquad/team1/signup/domain/user/User.java +++ b/BE/src/main/java/com/codesquad/team1/signup/domain/user/User.java @@ -5,6 +5,7 @@ import org.springframework.data.relational.core.mapping.MappedCollection; import org.springframework.data.relational.core.mapping.Table; +import java.io.Serializable; import java.time.LocalDate; import java.util.List; import java.util.Objects; @@ -16,7 +17,7 @@ import static com.codesquad.team1.signup.common.constants.ValidationConstants.USER_PHONE_NUMBER_VALIDATION_PATTERN; @Table("USERS") -public class User { +public class User implements Serializable { enum Gender { FEMALE,