익스프레스에는 앱에서 발생할 수 있는 모든 에러를 처리하는 에러 핸들러가 내장되어 있다. 에러 핸들러를 사용하면 앱에서 에러가 발생했을 때 한 군데서 에러를 처리할 수 있기 때문에 효율적이다.
익스프레스에서 일반적인 미들웨어 함수를 정의하는 것처럼 에러 처리를 위한 미들웨어 함수를 정의하면 된다. 단, 에러 처리 미들웨어 함수는 err, req, res, next 이렇게 4개의 파라미터를 사용한다.
// 에러 처리 핸들러 미들웨어 함수
app.use((err, req, res, next) => {
// 상태 코드 500 에러 메시지 전달
res.status(500).json({statusCode:res.statusCode, errMessage:err.message});
});
app.get('/error2', (req, res, next) => {
// next() 함수를 사용해서 에러 처리 핸들러로 에러 전달
next(new Error('에러 발생'));
});