-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feat! : 예외 처리 설정 #68
Feat! : 예외 처리 설정 #68
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!!
@@ -12,7 +13,7 @@ | |||
public class BaseResponse<T> implements ResponseStatus { | |||
|
|||
private final int code; | |||
private final int status; | |||
private final HttpStatus status; | |||
private final String message; | |||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
int 에서 HttpStatus로 타입을 변경해서 .values() 메서드의 중복사용을 없앨 수 있어 좋아보입니다!
log.error("[handle_ConstraintViolationException]", e); | ||
return new BaseErrorResponse(BAD_REQUEST, e.getMessage()); | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이 메서드는 어떤 예외처리를 위한 메서드인가요??
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
https://velog.io/@yyy96/JPA-ConstraintViolationException
JPA에서 Null을 대입했을때 발생하는 에러 종류인것 같네요.
KUIT 미션에 있어서 가져왔습니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM! 작업해주신 내용 반영하겠습니다
하나 여쭤보고 싶은 게 있는데, exception_handler
패키지명을 파스칼 케이스가 아닌 스네이크 케이스로 설정하신 이유가 있을까요?
아 미션플젝에서 가져오다가 쓴게된것 같네요. 수정하겠습니다! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM! 오옷 감사합니당
exception_handler -> exceptionHandler
.value() -> X
📝 요약
이슈 번호 : #66
예외 처리를 위한 ExceptionControllerAdvice 객체를 만들었습니다.
이제 설정한 HttpStatus Code가 클라이언트에 응답됩니다.
🔖 변경 사항
Exception 객체를 CustomException 객체로 통일 했습니다.
기존 도메인 별로 있던 Exception 객체들을 사용하지 않고 CustomException으로 통일했습니다.
다른 Exception객체들을 삭제하진 않았습니다. 각자 맡은 파트의 예외처리 객체를 수정해주세요.
CustomExceptionControllerAdvice 및 Base~ , Jwt~를 추가했습니다.
CustomExceptionControllerAdvice : CustomException을 처리합니다.
BaseExceptionControllerAdvice : spring 예외들을 처리 합니다. (예를들어 controller 없음, method 없음)
JwtExceptionControllerAdvice : Jwt 예외 객체들을 처리합니다. 추후 Jwt도 customException으로 처리하면 삭제 할 수도 있습니다.
BaseExceptionResponseStatus 객체
각 도메인 에러 코드와 메세지가 적혀있는 객체는 기존 그대로 사용하시면 됩니다.
단,
ResponseStatus
에서 status type이int
->HttpStatus
로 수정 되었습니다. (.value()
삭제)모든 변경 사항은 Kuit 7,8주차 서버 미션 코드를 바탕으로 작성했습니다.
HttpStatus 등의 조금의 수정이 있을 수 있습니다.
✅ 리뷰 요구사항
BaseResponse
BaseErrorResponse
에서ResponseStatus
상속을 제거를 고려 중입니다.
왜 상속하는지 잘 모르겠습니다.
📸 확인 방법 (선택)
각 기능 컨트롤러에서 다음과 같이
CustomException
객체를throw
하는 것으로 코드를 수정하고, Status는 그대로 인자로 넘기면, ExceptionControllerAdvice에서 감지해서 예외를 처리해줍니다.다음과 같이 Http상태 코드가 반환이 되고, 해당 메세지도 잘 출력 되는 것을 볼 수 있습니다.
📌 PR 진행 시 이러한 점들을 참고해 주세요