Error Handling ⇒ 에러가 발생했지만 서버를 다운시키지 않고 클라이언트에게 서버에 에러가 발생했다고 알려주는것 (즉, 서버 자체가 죽어버리지 않게 하는것이 에러핸들링)

Error code


404 : 정보를 찾을 수 없음

400 : 요청이 잘못됐음

500 : 서버 에러

Error Middleware


next 란

function next1(req,res,next){
  next(); // next2로 넘어감 (다음 미들웨어로 넘어감)
}
function next2(req,res,next){
  next(); // next3으로 넘어감
}
function next3(req,res,next){
  next();
}

이 next를 이용해서 Error handling을 해보자!

Controller

// userController.js
getUser(req, res, next) {
    try {
      const { id } = req.params;
      const user = this.users.find((user) => user.id === Number(id));
      if (!user) {
        throw { status: 404, message: "유저를 찾을 수 없습니다." }; // try가 끝나고catch로 넘어감
      }
      res.status(200).json({
        user,
      });
    } catch (error) {
      next(error);
      // error middleware => next에 error를 넣어주면 error middleware로 가게됨
    }
  }

try & catch 문으로 유저가 없는 경우 try안에 유저가 없는 경우 (if(!user)) throw를 작성해서 catch문으로 넘긴다. catch문 안에 next(error) 를 작성해서 error middleware로 넘긴다. (next에 error를 넣어주면 error middleware로 가게되기 때문에 error middleware로 넘어가게 된다.)

Error Middleware