혹시 비동기 통신같은 경우는 다들 어떤 식으로 에러 핸들링 하시나요? 유저에게 보여주지 않을 에러의 경우 단순히 console log (err)가 아니라 어떤 아키텍쳐로 관리 하시는지 궁금합니다!!
답변 2
유저에게 보여주지 않을 에러의 경우 "오류가 발생했습니다. 잠시 후 다시 시도해주세요."와 같은 메세지를 띄우고, 팀 정책에 따라 Sentry로 보내거나 콘솔찍고 ignore 하는 식으로 보통 처리합니다. 비동기 통신 처리하는 부분에서 이런 코드는 대부분 반복되는 경우가 많습니다. 이 경우 `handleServerError: (error: unknown) => void` 또는 `getServerErrorMessage: (error: unknown) => string`같은 함수를 만들어서 `utils/`에 넣어놓고, `onError` 핸들러에 이 함수를 호출해서 반복되는 로직을 처리해주면 깔끔해집니다.
비동기 통신 에러를 핸들링하는 방식은 여러 가지 있으며, 어플리케이션의 규모와 복잡성에 따라 달라질 수 있습니다. 큰 프로젝트에서는 별도의 에러 핸들링 서비스나 라이브러리를 사용하거나, 또는 직접 에러 핸들링 시스템을 설계하는 경우도 있습니다. 다음은 비동기 통신 에러 핸들링에 대한 몇 가지 일반적인 접근 방식입니다: 1. Try-Catch와 Promise의 Catch 메서드 사용: JavaScript에서 비동기 코드에서 발생하는 에러를 핸들링하기 위한 가장 기본적인 방법입니다. Promise 기반의 비동기 코드에서는 .catch() 메서드를 사용하며, async/await 구문을 사용하는 경우에는 try-catch 블록을 사용합니다. 2. 전역 에러 핸들링: JavaScript와 같은 언어에서는 전역 에러 핸들러(window.onerror 또는 window.addEventListener('error'))를 등록하여 모든 처리되지 않은 에러를 핸들링할 수 있습니다. 이를 통해 애플리케이션 전반에 걸친 에러를 감지하고, 로깅이나 사용자에게 피드백을 제공하는 등의 행동을 취할 수 있습니다. 3. 에러 트래킹 서비스 사용: Sentry나 Bugsnag 같은 에러 트래킹 서비스를 사용하여 애플리케이션에서 발생하는 에러를 자동으로 로깅하고 관리할 수 있습니다. 이러한 서비스는 발생하는 에러를 분류하고, 에러 발생 횟수를 추적하며, 에러가 발생한 환경 정보를 제공하는 등의 기능을 제공합니다. 4. 커스텀 에러 핸들링 아키텍쳐: 특정 요구사항이나 복잡한 에러 처리 로직을 수행해야 하는 경우, 직접 커스텀 에러 핸들링 아키텍쳐를 설계할 수 있습니다. 이는 에러의 종류에 따라 다르게 반응하거나, 특정 에러가 발생할 경우 사용자에게 알림을 보내는 등의 기능을 구현할 수 있습니다. 어떤 방식을 선택하든, 중요한 것은 모든 비동기 통신이 적절하게 에러를 핸들링하도록 하는 것입니다. 이렇게 하지 않으면 사용자에게 예상치 못한 문제가 발생할 수 있고, 문제를 진단하거나 디버깅하는 것이 어려워질 수 있습니다.
커리어리 AI 봇의 답변을 평가해 주세요!
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직 개발자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!