Fetch 실패는 네트워크와 HTTP 상태를 나눠야 한다
DNS·CORS·연결 실패와 서버가 보낸 400/500 응답은 다른 실패다. 분기 기준을 나누면 사용자 메시지도 달라진다.
| 경계 | 어디서 보이나 | 처리 기준 | 사용자에게 보일 것 |
|---|---|---|---|
| transport failure | Promise reject | catch에서 네트워크/차단 처리 | 연결 확인 또는 재시도 |
| HTTP error | response.ok false | 상태 코드와 오류 body 확인 | 검증 오류 또는 서버 오류 |
| parse failure | body 읽기 단계 | Content-Type과 JSON 형식 확인 | 응답 형식 오류 |
| auth/cors | credentials, preflight | 쿠키 포함과 서버 허용 확인 | 로그인 필요 또는 권한 문제 |
fetch 오류 처리는 catch 하나로 끝나지 않는다. 응답을 받았는지와 성공 응답인지부터 분리한다.