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: '서버에서 에러가 발생했습니다.' });
});