Skip to content

♻️ :: 예약 조회·로그아웃 오류 처리를 공통 AppException 규칙으로 통일 #309

Description

@aiden30015

Describe

#299에서 API 오류 처리를 AppException + guardApiCall 공통 규칙으로 정리했지만, 예약 조회(폴링)와 로그아웃은 범위에서 빠져 자체 오류 처리 경로가 남아 있습니다. 그래서 같은 오류라도 화면마다 다른 문구가 나오고, 일부 경우는 잘못 안내됩니다.

  • reservation_status_provider의 _pollingErrorFor가 공통 규칙과 별개로 문구를 매핑함 (예: 타임아웃 → "서버 응답 시간이 초과되었습니다.", 그 밖의 5xx → "서버 오류가 발생했습니다. (500)")
  • 같은 파일에 DioException catch와 일반 catch가 중복되어 있음
  • 고정 문구가 없는 5xx(500 등)에서 서버 message를 그대로 노출함 → 스택/예외명 같은 기술적 문구가 사용자에게 보일 수 있음
  • 토큰 갱신 실패·로그아웃으로 인터셉터가 요청을 취소(DioExceptionType.cancel)하면 AppException이 이를 "네트워크 연결을 확인해주세요."로 변환함 → 예약 등 액션 실패 토스트가 잘못 안내됨 (폴링만 따로 걸러내고 있었음)
  • logout_provider가 guardApiCall 대신 직접 try-catch + 로깅을 반복함

계획

  • AppException에 isCancelled를 추가해 앱이 스스로 취소한 요청을 구분하고, 에러 토스트·폴링 모두 이를 안내하지 않음
  • 5xx 중 고정 문구가 없는 경우 서버 메시지 대신 일반 서버 오류 문구를 사용
  • 폴링 전용 매핑(_pollingErrorFor)을 제거하고 AppException.from으로 통일, 중복 catch 블록 병합
  • 로그아웃 provider를 guardApiCall 패턴으로 교체

Additional

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions