퀴즈존 기능 개발이 진행되면서, 다양한 에러 상황에 대한 체계적인 처리의 필요성이 대두되었습니다. 특히 비동기 작업과 컴포넌트 렌더링 과정에서 발생하는 에러들을 일관되게 처리하고, 사용자에게 적절한 피드백을 제공하는 것이 중요한 과제였습니다.
처음에는 단순히 try-catch문을 사용하여 개별적으로 에러를 처리하려 했으나, 이는 코드 중복을 발생시키고 유지보수를 어렵게 만든다는 것을 깨달았습니다. 이에 React의 Error Boundary 패턴을 활용하여 선언적이고 재사용 가능한 에러 처리 시스템을 구축하기로 했습니다.
주요 구현 내용은 다음과 같습니다:
가장 핵심적인 부분인 AsyncBoundary 컴포넌트의 구현 예시입니다:
const AsyncBoundary = ({
children,
onError,
onReset,
fallback
}: AsyncBoundaryProps) => {
return (
<ErrorBoundary onError={onError} onReset={onReset} fallback={fallback}>
<Suspense fallback={<LoadingSpinner />}>
{children}
</Suspense>
</ErrorBoundary>
);
};
잘된 점:
개선이 필요한 점: