(보기만해도 지옥같은 썸네일을 누르신 것을 환영합니다...)
node.js환경에서는 어떤 방식으로 에러를 다루는지 한번
📝기록해 보도록 하자📝
에러 핸들링 모델인 ExpressError.js파일을 작성한다.
MVC패턴으로 작성하고 싶다면 미리 model폴더를 만들어 주도록 하자.
class ExpressError extends Error {
constructor(message, errorCode) {
super(message)
this.code = errorCode
}
}
module.exports = ExpressError
해당 파일을 불러온 뒤,
const ExpressError = require("../models/ExpressError")
에러에 해당하는 message와 errorCode를 던지거나(throw)
throw new ExpressError("던질까 말까", 404)
다음으로 넘기거나(next)
return next(new ExpressError("무슨 생각을 하고 계신가요?", 404))
하여 아주 간편하고 짧게 에러를 잡을 수 있다.
throw로 에러 핸들링을 할 경우 별도의 return이 필요하지 않지만,
next로 에러 핸들링을 할 경우 return을 해 주어야 다음 미들웨어로 넘어가게 된다. 🤫
개인적으로 asycn await를 통한 비동기 작업을 할 때 try catch를 많이 사용하는데, catch부분마다 무슨 에러에 해당되는지 날려주는 코드가 조금은 길지만 후에 작업을 할 때 더 도움이 되는 것 같다. 이 때 자주 사용하는 웹 페이지 에러 코드를 간단하게 정리해보자.
401 - 인증 필요
예를 들어 로그인을 하는 경우, 로그인 정보가 일치하지 않거나 어떠한 인증이 필요할 때 사용한다.
404 - 찾을 수 없음
해당 페이지가 존재하지 않을 때 사용한다. 인터넷을 사용하면서 한번쯤 마주쳤을 에러 코드
500 - 내부 서버 오류
서버에서 어떤 요청을 했을 때 실패했을 경우 사용한다.