Skip to content

Chore: 예외 코드 추가#20

Merged
stoneTiger0912 merged 2 commits intomainfrom
chore/add-advice
Mar 2, 2026
Merged

Chore: 예외 코드 추가#20
stoneTiger0912 merged 2 commits intomainfrom
chore/add-advice

Conversation

@stoneTiger0912
Copy link
Member

@stoneTiger0912 stoneTiger0912 commented Mar 2, 2026

Summary by CodeRabbit

릴리스 노트

  • Bug Fixes

    • 그룹, 멤버, 권한, 가입 관련 작업에서 더욱 명확한 오류 메시지 제공
  • Refactor

    • API 오류 처리를 표준화하여 일관된 오류 응답 구조 적용
    • 도메인별 오류 코드 분류로 API 오류 응답의 일관성 및 가독성 향상

@stoneTiger0912 stoneTiger0912 self-assigned this Mar 2, 2026
@coderabbitai
Copy link

coderabbitai bot commented Mar 2, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e22ad09 and a3e8540.

📒 Files selected for processing (21)
  • src/main/java/flipnote/group/adapter/out/entity/GroupEntity.java
  • src/main/java/flipnote/group/adapter/out/persistence/GroupMemberRepositoryAdapter.java
  • src/main/java/flipnote/group/adapter/out/persistence/GroupRepositoryAdapter.java
  • src/main/java/flipnote/group/adapter/out/persistence/GroupRoleRepositoryAdapter.java
  • src/main/java/flipnote/group/adapter/out/persistence/JoinRepositoryAdapter.java
  • src/main/java/flipnote/group/api/advice/.gitkeep
  • src/main/java/flipnote/group/api/advice/ErrorResponse.java
  • src/main/java/flipnote/group/api/advice/GlobalExceptionHandler.java
  • src/main/java/flipnote/group/application/service/AddPermissionService.java
  • src/main/java/flipnote/group/application/service/ApplicationFormService.java
  • src/main/java/flipnote/group/application/service/ChangeGroupService.java
  • src/main/java/flipnote/group/application/service/CreateGroupService.java
  • src/main/java/flipnote/group/application/service/DeleteGroupService.java
  • src/main/java/flipnote/group/application/service/FindGroupNameService.java
  • src/main/java/flipnote/group/application/service/FindGroupService.java
  • src/main/java/flipnote/group/application/service/JoinRespondService.java
  • src/main/java/flipnote/group/application/service/KickMemberService.java
  • src/main/java/flipnote/group/application/service/RemovePermissionService.java
  • src/main/java/flipnote/group/domain/policy/.gitkeep
  • src/main/java/flipnote/group/domain/policy/BusinessException.java
  • src/main/java/flipnote/group/domain/policy/ErrorCode.java

Walkthrough

일관된 오류 처리 전략을 구현하기 위해 예외 처리 패턴을 개선합니다. 전역적으로 IllegalArgumentException을 도메인 특화 BusinessException으로 교체하고, 표준화된 ErrorCode와 에러 응답 처리 인프라를 추가합니다.

Changes

Cohort / File(s) Summary
Domain Policy & Exception Classes
src/main/java/flipnote/group/domain/policy/ErrorCode.java, src/main/java/flipnote/group/domain/policy/BusinessException.java
ErrorCode 열거형과 BusinessException 클래스 추가. ErrorCode는 HttpStatus, code, message를 포함한 표준화된 오류 정의 제공. BusinessException은 RuntimeException을 확장하며 errorCode를 캡슐화.
Global Exception Handler & Response
src/main/java/flipnote/group/api/advice/GlobalExceptionHandler.java, src/main/java/flipnote/group/api/advice/ErrorResponse.java
전역 예외 처리기 및 응답 DTO 추가. GlobalExceptionHandler는 BusinessException 및 일반 Exception을 처리하여 적절한 HTTP 상태 코드와 ErrorResponse를 반환.
Repository Adapter Exception Handling
src/main/java/flipnote/group/adapter/out/persistence/GroupRepositoryAdapter.java, src/main/java/flipnote/group/adapter/out/persistence/GroupMemberRepositoryAdapter.java, src/main/java/flipnote/group/adapter/out/persistence/GroupRoleRepositoryAdapter.java, src/main/java/flipnote/group/adapter/out/persistence/JoinRepositoryAdapter.java
IllegalArgumentException을 BusinessException으로 교체. GROUP_NOT_FOUND, USER_NOT_IN_GROUP, MEMBER_NOT_FOUND, JOIN_NOT_FOUND 등의 정의된 ErrorCode 사용.
Entity Validation Exception Handling
src/main/java/flipnote/group/adapter/out/entity/GroupEntity.java
검증 및 카운트 메서드에서 IllegalArgumentException을 BusinessException으로 교체. INVALID_INPUT, GROUP_INVALID_NAME, GROUP_NAME_TOO_LONG, GROUP_INVALID_MAX_MEMBER, GROUP_MEMBER_LIMIT_EXCEEDED, MEMBER_COUNT_UNDERFLOW 등의 ErrorCode 사용.
Service Layer Exception Handling
src/main/java/flipnote/group/application/service/CreateGroupService.java, src/main/java/flipnote/group/application/service/AddPermissionService.java, src/main/java/flipnote/group/application/service/RemovePermissionService.java, src/main/java/flipnote/group/application/service/ChangeGroupService.java, src/main/java/flipnote/group/application/service/DeleteGroupService.java, src/main/java/flipnote/group/application/service/FindGroupService.java, src/main/java/flipnote/group/application/service/FindGroupNameService.java
서비스 메서드에서 IllegalArgumentException 및 NoSuchElementException을 BusinessException으로 교체. 해당 ErrorCode(GROUP_NOT_FOUND, NOT_OWNER, IMAGE_NOT_FOUND, IMAGE_INVALID_REQUEST, IMAGE_SERVER_ERROR, IMAGE_SERVICE_ERROR 등) 사용.
Application Form & Join Services
src/main/java/flipnote/group/application/service/ApplicationFormService.java, src/main/java/flipnote/group/application/service/JoinRespondService.java, src/main/java/flipnote/group/application/service/KickMemberService.java
가입 요청 및 권한 관련 메서드에서 IllegalArgumentException을 BusinessException으로 교체. JOIN_ALREADY_EXISTS, PERMISSION_DENIED, GROUP_PRIVATE, GROUP_MEMBER_LIMIT_EXCEEDED, JOIN_ALREADY_ACCEPTED, PERMISSION_NOT_FOUND 등의 ErrorCode 사용.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Poem

🐰 예외를 다스리는 새로운 정책,
ErrorCode로 맺힌 튼튼한 체계,
GlobalHandler가 우아하게 걸어다니고,
BusinessException의 명확한 목소리 들리니,
오류 처리의 숲이 정돈되었네! ✨

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/add-advice

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 and usage tips.

@stoneTiger0912 stoneTiger0912 merged commit fb3d7dc into main Mar 2, 2026
1 check was pending
@stoneTiger0912 stoneTiger0912 deleted the chore/add-advice branch March 2, 2026 09:22
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