Skip to content

refactor: 도메인 예외의 중복 보일러플레이트를 공통 클래스로 모은다 - #146

Merged
ff1451 merged 2 commits into
mainfrom
refactor/exceptions
Oct 16, 2026
Merged

ff1451 merged 2 commits into
mainfrom
refactor/exceptions

Conversation

@ff1451

@ff1451 ff1451 commented Oct 16, 2026

Copy link
Copy Markdown
Contributor

#144(에러 응답 정리) 위에 쌓인 PR이다. BcsdException을 두 PR이 함께 고쳐 충돌을 피하려고 쌓았다. #144가 머지되면 base를 main으로 바꾼다.

요약

동작을 바꾸지 않는 리팩토링. 356줄 삭제, 23줄 추가.

  • *ExceptionType enum 11개: 각자 같은 withDetail 구현과 Detailed{Domain}ExceptionType record(약 24줄)를 복사해 갖고 있었다. BcsdExceptionType.withDetail을 default 메서드로 바꾸고 공용 DetailedExceptionType 하나로 합쳤다.
  • 도메인 예외 클래스 12개(GameException 등): 같은 exceptionType 필드·생성자·getter를 각자 갖고 있었다. 이를 BcsdException으로 올리고 각 클래스는 생성자 한 줄만 남겼다. 도메인 예외 클래스 자체는 유지해서 호출부(new GameException(GameExceptionType.X))는 바뀌지 않는다.
  • 메시지를 직접 만드는 커스텀 타입(ImportFileInvalidType, SlackIdDuplicatedType)은 자체 withDetail 오버라이드를 그대로 둬 기존 동작을 유지한다.

동작 동일성

  • 상태 코드·메시지·withDetail 메시지 형식(MESSAGE_FORMAT)이 그대로다. 상세가 붙은 타입에 다시 withDetail하면 원래 타입에 새 상세를 붙이는(이전 상세를 대체하는) 동작도 같다 — 계약 테스트에 1건 추가.

테스트

  • 로컬 전체 ./gradlew test: 541건 중 540 통과, 1 스킵.

- 11개 *ExceptionType enum이 같은 withDetail 구현과 Detailed* record를 각자 복사해 갖고 있었다.
  BcsdExceptionType의 default 메서드와 공용 DetailedExceptionType 하나로 합친다.
- 12개 도메인 예외가 똑같이 갖고 있던 exceptionType 필드·getter를 BcsdException으로 올리고,
  도메인 예외는 생성자만 남긴다. 호출부(new GameException(...))와 응답은 그대로다.
- 메시지를 직접 만드는 ImportFileInvalidType·SlackIdDuplicatedType은 기존 withDetail 동작을 유지한다.
@coderabbitai

coderabbitai Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 19 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 6f988bab-5b85-48c9-bcc9-568a0d59c7fa
📥 Commits

Reviewing files that changed from the base of the PR and between bba378e and b675085.

📒 Files selected for processing: 26
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/activity/exception/ActivityException.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/activity/exception/ActivityExceptionType.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/auth/exception/AuthException.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/auth/exception/AuthExceptionType.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/curriculum/exception/CurriculumException.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/curriculum/exception/CurriculumExceptionType.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/game/exception/GameException.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/game/exception/GameExceptionType.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/global/exception/BcsdException.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/global/exception/BcsdExceptionType.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/global/exception/DetailedExceptionType.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/global/exception/GlobalException.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/global/exception/GlobalExceptionType.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/home/exception/HomeException.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/home/exception/HomeExceptionType.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/ledger/exception/LedgerException.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/ledger/exception/LedgerExceptionType.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/media/exception/MediaException.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/media/exception/MediaExceptionType.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/member/exception/MemberException.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/member/exception/MemberExceptionType.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/reservation/exception/ReservationException.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/reservation/exception/ReservationExceptionType.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/track/exception/TrackException.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/track/exception/TrackExceptionType.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/global/exception/BcsdExceptionTypeContractTest.java
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@ff1451
ff1451 changed the base branch from fix/error-responses to main October 16, 2026 07:47
@ff1451
ff1451 merged commit 0690ad0 into main Oct 16, 2026
2 checks passed
@ff1451
ff1451 deleted the refactor/exceptions branch October 16, 2026 07:57
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.

1 participant