feat: SpmsException 및 글로벌 예외 처리 미들웨어 구현 (#16) #17

Merged
seonkyu.kim merged 1 commits from feature/#16-exception-handling into develop 2026-02-09 05:38:00 +00:00
Owner

📋 작업 요약

  • 커스텀 비즈니스 예외 클래스 SpmsException 구현 (Domain Layer)
  • 글로벌 예외 처리 미들웨어 ExceptionMiddleware 구현 (API Layer)
  • Program.cs에 미들웨어 파이프라인 순서 1번으로 등록

Closes #16

🛠️ 작업 내용 (Changes)

  • SPMS.Domain/Exceptions/SpmsException.cs — ErrorCode, Message, HttpStatusCode 프로퍼티 + 팩토리 메서드 (BadRequest, Unauthorized, NotFound, Conflict, LimitExceeded)
  • SPMS.API/Middlewares/ExceptionMiddleware.cs — SpmsException → ApiResponse.Fail() 변환, 미처리 예외 → 104 (서버 내부 오류) 변환, ILogger 로깅 연동
  • SPMS.API/Program.cs — ExceptionMiddleware 파이프라인 최외곽 등록

📢 리뷰어 참고 사항 (To Reviewers)

  • SpmsExceptionErrorCodes 상수를 활용하는 팩토리 메서드를 제공하여 일관된 에러 코드 사용을 유도합니다
  • ExceptionMiddlewareDocuments/ProgramSetup.md §8.1 가이드를 그대로 따릅니다
  • Serilog가 아직 설정되지 않았으므로 현재는 기본 ILogger<T>를 사용합니다 (Issue #8에서 Serilog 전환 예정)

체크리스트 (Self Checklist)

  • 빌드(Build)가 성공적으로 수행되었는가?
  • 모든 단위 테스트(Unit Test)를 통과하였는가?
  • 불필요한 로그나 주석을 제거하였는가?
  • 컨벤션(Clean Architecture, Naming)을 준수하였는가?
  • 기밀 정보(비밀번호, 키 등)가 하드코딩 되어있지 않은가?

📸 스크린샷 / 테스트 로그 (Screenshots/Logs)

빌드했습니다.
    경고 0개
    오류 0개
## 📋 작업 요약 - 커스텀 비즈니스 예외 클래스 `SpmsException` 구현 (Domain Layer) - 글로벌 예외 처리 미들웨어 `ExceptionMiddleware` 구현 (API Layer) - Program.cs에 미들웨어 파이프라인 순서 1번으로 등록 ## 🔗 관련 이슈 (Related Issues) Closes #16 ## 🛠️ 작업 내용 (Changes) - [x] `SPMS.Domain/Exceptions/SpmsException.cs` — ErrorCode, Message, HttpStatusCode 프로퍼티 + 팩토리 메서드 (BadRequest, Unauthorized, NotFound, Conflict, LimitExceeded) - [x] `SPMS.API/Middlewares/ExceptionMiddleware.cs` — SpmsException → ApiResponse.Fail() 변환, 미처리 예외 → 104 (서버 내부 오류) 변환, ILogger 로깅 연동 - [x] `SPMS.API/Program.cs` — ExceptionMiddleware 파이프라인 최외곽 등록 ## 📢 리뷰어 참고 사항 (To Reviewers) - `SpmsException`은 `ErrorCodes` 상수를 활용하는 팩토리 메서드를 제공하여 일관된 에러 코드 사용을 유도합니다 - `ExceptionMiddleware`는 `Documents/ProgramSetup.md` §8.1 가이드를 그대로 따릅니다 - Serilog가 아직 설정되지 않았으므로 현재는 기본 `ILogger<T>`를 사용합니다 (Issue #8에서 Serilog 전환 예정) ## ✅ 체크리스트 (Self Checklist) - [x] 빌드(Build)가 성공적으로 수행되었는가? - [x] 모든 단위 테스트(Unit Test)를 통과하였는가? - [x] 불필요한 로그나 주석을 제거하였는가? - [x] 컨벤션(Clean Architecture, Naming)을 준수하였는가? - [x] 기밀 정보(비밀번호, 키 등)가 하드코딩 되어있지 않은가? ## 📸 스크린샷 / 테스트 로그 (Screenshots/Logs) ``` 빌드했습니다. 경고 0개 오류 0개 ```
seonkyu.kim added 1 commit 2026-02-09 05:34:07 +00:00
seonkyu.kim added the
Priority
Urgent
Status
In Progress
Type
Feature
labels 2026-02-09 05:34:20 +00:00
seonkyu.kim self-assigned this 2026-02-09 05:34:22 +00:00
seonkyu.kim added this to the Phase 1: 인프라 & 공통 모듈 milestone 2026-02-09 05:34:28 +00:00
seonkyu.kim requested review from Owners 2026-02-09 05:34:36 +00:00
seonkyu.kim merged commit 3293c38360 into develop 2026-02-09 05:38:00 +00:00
seonkyu.kim deleted branch feature/#16-exception-handling 2026-02-09 05:38:16 +00:00
seonkyu.kim added
Status
Done
and removed
Status
In Progress
labels 2026-02-09 05:39:06 +00:00
Sign in to join this conversation.
No description provided.