에러 처리 아키텍처 가이드 #338
sgoldenbird
started this conversation in
Engineering Breakdown
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
1. ✨ 설계 배경 및 목적
Next.js App Router 기반 RoamReady 프로젝트에서 발생 가능한 다양한 에러를 구조적으로 처리하고, 사용자 경험을 보호하기 위해 다층 에러 처리 구조를 설계했습니다.
2. 🧱 구성요소 및 구조
ky의beforeError훅을 통해 모든 API 에러를 중앙 집중식으로 가공하며, 일관된 에러 형식으로 throw합니다.3. ⚙️ 동작 흐름 요약
글로벌 에러 처리:
src/app/error.tsx는 앱 전체의 마지막 방어선으로, 치명적 오류 발생 시 전체 UI를 대체합니다.세그먼트 에러 처리:
src/app/(app)/error.tsx는 특정 페이지 그룹 내 에러만 처리해 상위 레이아웃을 보존하며, UX 일관성을 유지합니다.컴포넌트 레벨 렌더링 에러 처리: ComponentErrorBoundary는 앱 전체가 아닌 특정 영역에서만 문제가 발생했을 때 오류를 격리합니다.
API 에러 처리(401 이외):
401 Unauthorized 에러는 middleware.ts와 apiClient.ts가 협력하는 다층 방어 구조로 설계
useToast().showError()등으로 사용자에게 메시지를 표시합니다.4. 🔮 설계 의도 및 고려사항
API 에러 처리 5 단계 흐름
미들웨어의 역할
미들웨어는 오직 refreshToken이 존재하는 경우의 401 에러 자동 갱신만을 처리하여 토큰 관리 로직을 중앙화하고, 다른 모든 에러는 클라이언트로 전달합니다.
선언적 에러 UI
src/app/(app)/error.tsx와 ComponentErrorBoundary를 활용하여 렌더링 에러를 선언적으로 처리하고, 사용자가 어플리케이션의 다른 부분은 계속 이용할 수 있도록 합니다.
5. 🪄 세부 설명: 주요 훅 / 컴포넌트 / 유틸
6. 🧩 사용 예시 및 패턴
컴포넌트 레벨 ErrorBoundary로 특정 컴포넌트 감싸기
Tanstack Query의 useMutation을 사용한 API 에러 처리
7.⚠️ 사용 시 주의사항
8. 📎 참고 파일 및 링크
Beta Was this translation helpful? Give feedback.
All reactions