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

[CHORE] 커스텀 에러 및 핸들러 구현 #35

Merged
merged 20 commits into from
Dec 27, 2024
Merged

Conversation

coli-geonwoo
Copy link
Contributor

@coli-geonwoo coli-geonwoo commented Dec 24, 2024

🚩 연관 이슈

closed #28

🌟 Description

ErrorCode

  • ErrorCode : status와 메시지를 정의합니다. (땅콩 소스코드 참고했습니다 🥜 )

    • ClientErrorCode : 4XX
    • ServerErrorCode : 5XX
  • DTException : 최상위 abstract 클래스(status와 message를 필드로 가짐)

    • DTClientException : 4XX 커스텀 에러
    • DTServeerException : 5XX 커스텀 에러

✨ 에러 핸들링 전략

error 설명 반환
BindException 폼 데이터를 Java 객체에 바인딩할 때, 해당 데이터가 객체의 필드에 맞지 않을 경우 BAD_REQUEST
ConstraintViolationException Bean validation 실패 BAD_REQUES
MethodArgumentTypeMismatchException 컨트롤러 메서드에서 요청 파라미터를 바인딩 시 타입 불일치 BAD_REQUEST
ClientAbortException 클라이언트가 응답을 받기 전에 연결을 강제로 종료 BAD_REQUEST
HttpRequestMethodNotSupportedException 지원되지 않는 HTTP 메서드로 요청을 보냈을 때 METHOD_NOT_ALLOWED,
NoResourceFoundException 존재하지 않는 리소스 조회 시 NOT_FOUND
HttpMediaTypeNotSupportedException HTTP 요청 본문의 미디어 타입이 지원하지 않는 형식일 때 UNSUPPORTED_MEDIA_TYPE
DTClientErrorException 커스텀 클라이언트 에러 4XX
DTServerErrorException 커스텀 서버 에러 5XX
Exception 그 외 에러 INTERNAL_SERVER_ERROR

🗣️ 리뷰 요구사항 (선택)

현재는 DTException의 존재 이유가 크게 느껴지지 않아서, abstract 클래스를 없애고 DTClientException은 필드로 ClientErrorCode를 DTServerException은 필드로 ServerErrorCode를 들고 있게 하는 건 어떨까요?

타입계층의 존재이유가 크게 없는 것 같아 여쭈어요.

@coli-geonwoo coli-geonwoo linked an issue Dec 24, 2024 that may be closed by this pull request
@unifolio0 unifolio0 added the chore 기타 label Dec 24, 2024
Copy link

github-actions bot commented Dec 24, 2024

Test Results

24 tests   24 ✅  3s ⏱️
10 suites   0 💤
10 files     0 ❌

Results for commit 2a5a268.

♻️ This comment has been updated with latest results.

Copy link

github-actions bot commented Dec 24, 2024

📝 Test Coverage Report

Overall Project 48.41% -44.84%
Files changed 3%

File Coverage
GlobalExceptionHandler.java 6.14% -93.86%
ErrorResponse.java 0%
DTException.java 0%
DTClientErrorException.java 0%
DTServerErrorException.java 0%
ServerErrorCode.java 0%
ClientErrorCode.java 0%

Copy link
Contributor

@leegwichan leegwichan left a comment

Choose a reason for hiding this comment

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

/noti @coli-geonwoo
굳! 코멘트 답변 부탁드립니다!

Comment on lines +27 to +30
public ResponseEntity<ErrorResponse> handleBindingException(BindException exception) {
log.warn("message: {}", exception.getMessage());
return toResponse(ClientErrorCode.FIELD_ERROR);
}
Copy link
Contributor

Choose a reason for hiding this comment

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

[질문] 전부 ResponseEntity를 사용하신 이유가 있나요?

Copy link
Contributor Author

@coli-geonwoo coli-geonwoo Dec 25, 2024

Choose a reason for hiding this comment

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

다른 PR에서도 말했지만

  1. controller위 추상화 준위에 reponseentity가 올바르다고 생각하는 점
  2. 확장에 용이하다는 점
  3. 정적 메서드 제공으로 휴먼에러 방지에 용이하고 가독성이 좋다는 점

을 이유로 선호해요. 목요일 회의 이후에 명확히 컨벤션 정하고 반영하겠습니다!

Copy link
Contributor

@unifolio0 unifolio0 left a comment

Choose a reason for hiding this comment

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

/noti
사소한 개행 리뷰 하나 남겨서 바로 approve합니다~

Comment on lines 7 to 8
public enum ServerErrorCode implements ErrorCode {
INTERNAL_SERVER_ERROR(HttpStatus.INTERNAL_SERVER_ERROR, "서버 오류가 발생했습니다. 관리자에게 문의하세요."),
Copy link
Contributor

Choose a reason for hiding this comment

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

개행이 필요할 것 같아요

Copy link
Contributor Author

Choose a reason for hiding this comment

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

반영하겠습니다!

Copy link
Contributor

@leegwichan leegwichan left a comment

Choose a reason for hiding this comment

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

어프루브 누를께용

@coli-geonwoo coli-geonwoo merged commit 70558ab into develop Dec 27, 2024
3 checks passed
@coli-geonwoo coli-geonwoo deleted the chore/#28 branch December 27, 2024 11:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
chore 기타
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[CHORE] 커스텀 에러 객체 생성
3 participants