Express 에러 핸들러

youngsung·2023년 3월 22일
0

Node.js

목록 보기
6/7

에러 핸들러

에러가 발생할 경우 어떻게 공통로직으로 처리를 해주어야하는가를 시작으로 고민을 하였다.

express를 이용하면 미들웨어를 app.use()를 사용하면 쉽게 등록할 수 있따.

Error Handling 미들웨어 선언

기본적으로 express에서 오류를 처리하는 공통 미들웨어를 작성할 때 다음과 같이 작성해주었다.

// app.js
app.use((err, req, res, next) => {
  console.log(err)
  return res.status(err.status || 500).json({
    success: err.expect,
    errorMessage: err.message || '서버 에러가 발생했습니다.',
  })
})

인자를 3개 선언하게되면 일반적인 미들웨어이고, error미들웨어는 인자 4개를 선언해야 한다.

// errorHandler.js
module.exports = class CustomError extends Error {
  constructor(message, status, expect) {
    super() // 상속 클래스의 생성자에서는 반드시 super() 호출
    this.message = message
    this.status = status
    this.expect = expect
  }
}

에러가 발생했을때 next()함수를 사용해서 에러 처리를 핸들러로 에러를 전달하고 에러 처리 핸들러에서 클라이언트로 에러에 대한 응답을 처리할 수 있다.
예외처리에서 throw로 처리하면 된다.

profile
To Infinity and Beyond

0개의 댓글