백엔드 개발 · 심화
Express.js에서 미들웨어 체인이 비동기 에러를 처리할 때 발생할 수 있는 문제점과 async/await 환경에서의 에러 핸들링 전략을 설명해주세요.
힌트 · 비동기 에러는 자동으로 next()로 전달되지 않으므로 express-async-handler나 try-catch로 명시적 처리가 필요합니다.
미들웨어 체인에러 핸들링async/awaitnext(err)중앙 집중식 에러 처리
모범답안
Express.js 미들웨어 체인에서 비동기 에러는 next()로 자동 전달되지 않는 문제가 있습니다. 일반적인 동기 에러는 Express가 알아서 처리하지만, async/await를 사용하는 경우 try...catch 블록으로 감싸거나, express-async-handler 같은 래퍼 함수를 사용해야 합니다.
try...catch를 사용하면 각 미들웨어에서 에러를 잡아 next(err)로 전달할 수 있습니다. express-async-handler는 이 과정을 간편하게 해줍니다.
중앙 집중식 에러 처리를 위해서는 마지막 미들웨어에서 err 인자를 받는 에러 처리 미들웨어를 정의하여 모든 에러를 한 곳에서 처리하는 것이 좋습니다. 이렇게 하면 코드 중복을 줄이고 에러 로깅, 사용자 정의 에러 페이지 표시 등을 일관되게 처리할 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 Node.js 면접 질문
- npm과 yarn의 차이점과 package-lock.json의 역할에 대해 설명해주세요.
- Node.js에서 Buffer 객체의 용도와 문자열과의 차이점을 설명해주세요.
- Node.js의 Event Loop가 멀티코어 시스템에서 CPU 집약적 작업을 처리할 때의 한계점과 이를 해결하기 위한 Worker Threads의 내부 동작 원리를 설명해주세요.
- Node.js 애플리케이션에서 메모리 누수가 발생하는 주요 원인들과 Heap Dump 분석을 통한 디버깅 방법을 설명해주세요.
- Node.js의 Cluster 모듈과 PM2의 차이점, 그리고 로드 밸런싱 알고리즘별 특성을 비교하여 설명해주세요.
- Node.js에서 Stream의 backpressure 현상이 발생하는 원인과 Transform Stream에서 이를 해결하는 방법을 설명해주세요.