라우트에서 에러를 발생시키면, 익스프레스가 알아서 이를 처리하고 에러 코드 및 정보를 사용자(클라이언트)로 응답을 할 수 있습니다.
app.get('/error', (req,res) => {
throw new Error('에러가 발생 했습니다.').. 라우트에서 에러가 발생하면 익스프레스가 알아서 잡아서 처리한다. 클라이언트로 500 에러 코드와 에러 정보를 전달한다.
})
⭐️ Express에는 앱에서 발생할 수 있는 모든 에러를 처리하는 에러 핸들러가 내장 되어져 있다. 에러 핸들러를 사용ㅎ면 앱에서 에러가 발생했을 때 한군데서 에러를 처리를 할 수 있기 때문에 더욱 효율 적이다. 일반적인 미들웨어 함수를 정의하는 것처럼 에러 처리를 위한 미들웨어 함수를 정의 하면된다. 하지만!!! 에러 처리 미들웨어 함수는 err, req, res, next <- 이렇게 4개의 파라미터를 사용해야 한다.
app.use((err,req,res,next) => {
res.status(500).json({statusCode: res.statusCode, errMessage:err.message}); //상태코드 500, 에러 메세지 전달
})
에러가 발생했을떄 next()함수를 사용해서 에러 처리 핸들러로 에러를 전달하고 에러 처리 핸들러에서 클라이언트로 에러에 대한 응답을 처리할 수 있다.
app.get('/error2', (req,res,next) => {
next(new Error('에러 발생')); // next()함수를 사용해서 에러처리 핸들러로 에러 전달
})