개발자

useSuspenseQuery 와 ErrorBoundary 궁금증입니다!

2023년 12월 13일조회 377

ReactQuery v5 와 ErrorBoundary를 공부하고 있습니다. 학습 과정에서 궁금한 점이 있는데용 Query 데이터를 가져올 때, 네트워크 오류 발생 시 오류 오버레이 UI가 렌더링되면서 uncaught errors 라고 메세지가 나오네요. 그러나 ErrorBoundary의 fallback UI는 렌더링이 제대로 됩니다. uncaught errors라면 ErrorBoundary에서 에러를 캐치하지 못한 걸까요? 그러기엔 fallback UI가 렌더링되니 오류를 잡은건가 헷갈립니다. 혹은 개발 환경에서는 오류 오버레이 UI가 렌더링되는 것이 정상적인건가요? 열심히 찾아봤는데 잘 나오지 않는 것같아 질문드립니다...!

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 0

답변이 없을 때 보이는 아이콘

첫 답변을 기다리고 있어요.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2023년 12월 13일

먼저, ReactQuery v5와 ErrorBoundary의 학습에 착실히 임하고 계신 것을 칭찬드립니다. 그리고 굉장히 좋은 질문을 주셨네요. React의 Error Boundary는 React 컴포넌트 트리 내에서 하위 컴포넌트가 렌더링 중에 발생한 에러를 포착하고 해당 에러를 고치지 못하게 하는 역할을 합니다. 이 경우 본인이 경험한 `uncaught errors` 메세지는 이 Error Boundary에서 정상적으로 에러를 잡았음을 의미합니다. 그리고 fallback UI가 렌더링되었다는 것도 ErrorBoundary가 오류를 적절히 처리하고 있는 증거입니다. 그런데 왜 'uncaught error'라는 메세지가 나오느냐? 당신이 마주치고 있는 개발 환경에서의 오류 오버레이 UI는 최상위에서 처리하지 못한 에러를 보여줍니다. 따라서 이 경우, 실제로 'uncaught'된 에러가 아닙니다. 대신 Error Boundary 내부에서 catch된 오류입니다. 개발 환경에서 종종 이런 현상을 볼 수 있습니다. 디버깅 도구인 React DevTools와 같은 도구들은 종종 catch된 예외사항을 보기 쉽게 하기 위해서 이를 노출시킵니다. 따라서 당신이 본 uncaught errors 메세지가 나오는 것은 개발 환경에서의 정상적인 현상입니다. 하지만, 실제로는 Error Boundary가 에러를 잡고 처리하고 있으며, 프로덕션 환경에서는 이와 같은 'uncaught error' 메세지가 사용자에게 노출되는 일은 없습니다. 오직 개발 환경에서만 확인 가능한 현상입니다. 따라서 해당 부분에 대해 걱정하실 필요가 없으며, ErrorBoundary가 적절히 동작하여 에러를 잡고 처리하는데 집중하시면 됩니다. API 요청 중 네트워크 문제 등으로 발생하는 오류를 잘 처리하기 위해서는 React Query의 `onError`나 `onSettled` callback을 사용하여 추가적인 에러 핸들링을 고려해볼 수도 있습니다. 특히, useSuspenseQuery 은 Suspense mode를 지원하므로, 이 경우에도 장애 상황에서 적절한 fallback UI를 제공할 수 있는 방법을 고민해보시면 좋을 것 같습니다. 그래도 여전히 궁금증이 남아있다면 언제든 다시 질문해주세요!

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!