13장: 오류 처리와 커스텀 에러 페이지
Next.js의 에러 처리 시작하기
웹사이트를 개발하다 보면 예상치 못한 오류가 언제든 발생할 수 있습니다. Next.js 15에서는 이러한 에러들을 효과적으로 처리하고, 사용자에게 친절한 안내 화면을 제공하기 위한 다양한 도구를 내장하고 있습니다. 앞선 장들에서 Next.js 15의 구조와 기능들을 익혔다면, 이제는 오류 상황에 대처하는 방법을 알아볼 차례입니다.
기본 제공 에러 페이지 이해
Next.js는 특별한 설정 없이도 서버 내부에서 문제가 발생할 경우 자동으로 500 에러 페이지를 띄워줍니다. 이 기본 500 페이지는 심각한 서버 오류를 사용자에게 간략하게 알려주는 역할을 합니다. 그러나 프로젝트의 브랜드나 UX를 생각한다면, 직접 커스텀한 에러 화면을 만드는 것이 좋습니다. pages 디렉터리 기반 프로젝트에서는 pages/500.js
파일을 추가해 개성 있는 오류 페이지를 설정할 수 있습니다.
라우팅 에러와 커스텀 처리
잘못된 주소 입력, 없는 페이지 접근 등으로 인해 발생하는 404 에러 역시 Next.js가 자동으로 처리합니다. 최근 App Router 기반에서는 app/not-found.js
파일을 만들어 페이지를 꾸밀 수 있습니다. 각 라우트별 특성에 맞는 안내 메시지, 홈 이동 버튼, 관련 도움말 링크 등을 추가해 사용자 이탈을 막아보세요.
코드 내부의 에러 다루기
Next.js에서 컴포넌트나 서버 액션 내에서 오류가 발생할 수 있습니다. 이때는 자바스크립트의 try/catch 구문을 활용하고, 필요하다면 에러 경계(Error Boundary) 컴포넌트를 통해 특정 부분에서만 오류를 잡아낼 수 있습니다. Next.js 15 App Router에서는 루트 레이아웃에 error.js
혹은 error.tsx
파일을 두어, 하위 경로에서 발생한 오류를 모두 받아 처리할 수도 있습니다. 가령 잘못된 데이터 요청이나 서버 통신 실패 등 다양한 상황에 맞춤화된 피드백을 제공할 수 있습니다.
에러 핸들링 베스트 프랙티스
에러 처리는 단순히 오류 메시지로 끝내는 것이 아니라, 사용자에게 불편을 줄이는 것이 목적입니다. 따라서 공통된 에러 페이지에는 상황별 안내, 빠른 홈 이동, 신속한 문의가 가능하도록 설계해야 합니다. 또한, 서버 로그를 남기거나, 개발 시 콘솔로 확인 가능한 디버깅 정보를 확보하는 것이 중요합니다. 실제 배포 환경에서는 민감한 에러 세부 정보가 노출되지 않도록 주의하세요.
한 단계 더 나아가기
실무에서는 다양한 예외 상황을 대비한 글로벌 에러 핸들링 전략이 필요합니다. Next.js 15는 Root Layout과 GlobalError 파일을 통해 전역 에러 관리가 가능하므로, 앱 전체 품질을 높이는 데 적극 활용하시기 바랍니다. 각종 에러 상황을 체계적으로 처리하면서, 사용자가 언제나 신뢰할 수 있는 서비스를 경험하도록 만드는 것이 오늘날 웹 개발자의 필수 덕목입니다.


