Error Handling ⇒ 에러가 발생했지만 서버를 다운시키지 않고 클라이언트에게 서버에 에러가 발생했다고 알려주는것 (즉, 서버 자체가 죽어버리지 않게 하는것이 에러핸들링)
404
: 정보를 찾을 수 없음
400
: 요청이 잘못됐음
500
: 서버 에러
function next1(req,res,next){
next(); // next2로 넘어감 (다음 미들웨어로 넘어감)
}
function next2(req,res,next){
next(); // next3으로 넘어감
}
function next3(req,res,next){
next();
}
이 next를 이용해서 Error handling을 해보자!
// 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로 넘어가게 된다.)