서버가 404 주는데도 코드가 그냥 다음 줄로 넘어가버려요. 에러 처리하려고 try catch 감쌌는데 catch가 안 잡네요.


try {
  const res = await fetch("/api/missing");
  const data = await res.json(); // 404인데 여기까지 그냥 옴
  render(data);
} catch (e) {
  console.log("에러:", e); // 안 찍힘
}


결국 res.json() 하다가 이상한 데서 파싱 에러나면서 엉뚱한 메시지가 뜨더라고요. 예전에 axios 쓸 때는 404면 알아서 catch로 갔던 것 같은데 fetch는 왜 안 그러죠? 제가 알기론 네트워크 자체가 끊기거나 하면 reject 되는 걸로 아는데, HTTP 상태코드 에러는 그냥 정상 취급하는 건가요? 그럼 404, 500 같은 거는 매번 수동으로 체크해줘야 되는 건지 궁금합니다.