Skip to content

[ Core ] 예외를 한 체계로 모은다 (CareServiceException 제거) #160

Open

Description

@RosieOh

#132 의 2단계. 상위: #132

무엇이 문제인가

예외가 두 체계로 나뉘어 있고, 그중 하나는 상태 코드를 문자열로 들고 다닌다.

체계 수 (2026-10-24) 상태 코드를 정하는 방법
CareServiceException 89곳 문자열 코드 → 핸들러가 네 가지만 알아본다. 나머지는 500
BusinessException 84곳 ErrorCode 가 HttpStatus 를 직접 들고 있다

#159 에서 상태 코드가 틀린 곳은 고쳤지만, 체계는 그대로 둘이다. CareServiceException 을
코드 없이 던지면 여전히 조용히 500 이 된다 — 같은 함정이 남아 있다.

왜 한 번에 못 바꾸나

두 체계의 기본 매핑이 다르다. 기계적으로 치환하면 상태 코드가 조용히 달라지고, 그걸
기대하는 계약 테스트가 깨진다(실제로 #159 에서 예약 테스트 3개가 그렇게 깨졌다).

그래서 순서가 있다.

To Do

  • 현재 매핑을 테스트로 고정한다 — CareServiceException 의 코드별 상태, BusinessException
    의 ErrorCode 별 상태를 표로 단언
  • 코드를 주지 않는 CareServiceException throw 를 전수로 찾아 의도한 상태를 정한다
    (그냥 치환하지 않는다 — 500 이 맞는 곳도 있다)
  • ErrorCode 에 빠진 항목을 더한다
  • CareServiceException throw 를 BusinessException 으로 옮긴다
  • CareServiceException 과 핸들러의 resolveCareServiceErrorCode 를 지운다
  • OpenAPI 스펙 락 재생성
  • PR 머지 후 본 이슈 종료

건드리지 않을 것

백그라운드 동기화(external/publicdata)의 catch (Exception e) 는 HTTP 응답이 없어 상태 코드가
의미 없다. 다만 원인을 덮어쓰는 문제는 남으므로 별도로 다룬다.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions