요청 실패를 사용자 복구 행동과 관측 가능한 오류 코드로 모델링합니다.
운영 UI는 내부 stack 대신 안정적인 오류 code와 다시 시도 행동을 제공합니다. 로그에는 release와 요청 맥락을 개인정보 없이 연결합니다.
같은 오류를 여러 계층에서 중복 보고하지 않습니다.
오프라인, 권한, 검증, 서버 장애를 서로 다른 사용자 행동으로 연결합니다.
catch에서 오류를 삼키고 빈 목록을 보여주면 장애가 데이터 없음으로 보입니다.
로컬 프로젝트에서 확인해보세요OFFLINE과 FORBIDDEN 상태에 서로 다른 안내를 추가하세요.
const failure = {
code: "TEMPORARY",
requestId: "req-20260805",
message: "잠시 후 다시 시도해주세요.",
};
export default function App() {
return (
<main>
<h1>강좌 조회 실패</h1>
<p role="alert">{failure.message}</p>
<button onClick={() => location.reload()}>다시 시도</button>
<small>문의 코드 {failure.requestId}</small>
</main>
);
}