Skip to content
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

Merged
merged 5 commits into from
Aug 12, 2024
Merged

Conversation

drbug2000
Copy link
Collaborator

📝 요약

이슈 번호 : #66

예외 처리를 위한 ExceptionControllerAdvice 객체를 만들었습니다.
이제 설정한 HttpStatus Code가 클라이언트에 응답됩니다.

🔖 변경 사항

Exception 객체를 CustomException 객체로 통일 했습니다.

기존 도메인 별로 있던 Exception 객체들을 사용하지 않고 CustomException으로 통일했습니다.
다른 Exception객체들을 삭제하진 않았습니다. 각자 맡은 파트의 예외처리 객체를 수정해주세요.

  • 기존 Exception 객체들은 예외 처리가 되지 않습니다.(Advice에서 감지 되지 않습니다)

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 상속을 제거

를 고려 중입니다.
왜 상속하는지 잘 모르겠습니다.

📸 확인 방법 (선택)

image
각 기능 컨트롤러에서 다음과 같이 CustomException 객체를 throw하는 것으로 코드를 수정하고, Status는 그대로 인자로 넘기면, ExceptionControllerAdvice에서 감지해서 예외를 처리해줍니다.
image
다음과 같이 Http상태 코드가 반환이 되고, 해당 메세지도 잘 출력 되는 것을 볼 수 있습니다.


📌 PR 진행 시 이러한 점들을 참고해 주세요

* P1 : 꼭 반영해 주세요 (Request Changes) - 이슈가 발생하거나 취약점이 발견되는 케이스 등
* P2 : 반영을 적극적으로 고려해 주시면 좋을 것 같아요 (Comment)
* P3 : 이런 방법도 있을 것 같아요~ 등의 사소한 의견입니다 (Chore)

@drbug2000 drbug2000 linked an issue Aug 9, 2024 that may be closed by this pull request
2 tasks
Copy link
Collaborator

@seongjunnoh seongjunnoh left a 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;

Copy link
Collaborator

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());
}

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 메서드는 어떤 예외처리를 위한 메서드인가요??

Copy link
Collaborator Author

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 미션에 있어서 가져왔습니다.

Copy link
Member

@hyunn522 hyunn522 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! 작업해주신 내용 반영하겠습니다
하나 여쭤보고 싶은 게 있는데, exception_handler 패키지명을 파스칼 케이스가 아닌 스네이크 케이스로 설정하신 이유가 있을까요?

@drbug2000
Copy link
Collaborator Author

LGTM! 작업해주신 내용 반영하겠습니다

하나 여쭤보고 싶은 게 있는데, exception_handler 패키지명을 파스칼 케이스가 아닌 스네이크 케이스로 설정하신 이유가 있을까요?

아 미션플젝에서 가져오다가 쓴게된것 같네요. 수정하겠습니다!

Copy link
Collaborator

@arkchive arkchive left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! 오옷 감사합니당

@drbug2000 drbug2000 merged commit 4777964 into develop Aug 12, 2024
3 checks passed
@hyunn522 hyunn522 deleted the feat/#66/exception-handler branch August 12, 2024 08:08
seongjunnoh pushed a commit that referenced this pull request Oct 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Feat: Exception Handler
4 participants