[TIL] Day 22 : 에러 처리 (수정필요)

Q·2024년 5월 16일

TIL

목록 보기
23/59

try ... catch

error 가 발생했을 때 서버가 종료되지 않게 하기 위함

에러 처리 미들웨어 (called as 'Exception Filter' in Nest.js)
express.js에서 공식적으로 제공하는 기능

app.use((err, req, res, next) => {

});

와 같이 err, req, res, next의 4개의 parameters를 가진 미들웨어는 express에서 무조건 에러 처리 미들웨어로 인지한다.

err : 이전 미들웨어에서 발생한 에러를 전달받은 객체
에러를 parameter로 받아
클라이언트에게 에러 response를 반환하거나
ex) res.status(500).send("Something broken!")

next 를 통해 다음 미들웨어로 에러를 전달하는 역할을 한다.

throw 라는 명령어를 통해 catch 로 에러 전달
throw 문은 예외를 발생시키고 그 예외 객체에 변수를 포함할 수도 있다.

예시

router.get('/example', (req, res, next) => {
  try {
    const customError = new Error('사용자 정의 에러 메시지');
    customError.customProperty = '사용자 정의 속성 값';
    throw customError;
  } catch (error) {
    next(error);
  }
});

app.use((err, req, res, next) => {
  console.error(err); // 에러 로깅

  // 사용자 정의 속성 값에 접근
  console.log(err.customProperty); // 출력: 사용자 정의 속성 값

  res.status(500).json({ errorMessage: '서버에서 에러가 발생했습니다.' });
});

0개의 댓글