본문 바로가기
프로젝트 개발 기록/[개발] node.js | nest, express

[TypeScript + Express] Error handling

by HelloJudy 2022. 6. 17.

error middleware를 구현해보자!

 

 

1. Express Error handling middleware

 

error.status로 error를 던질 때 상태코드도 설정할 수 있도록 구현했다.

 

import { Request, Response, NextFunction } from "express";
import { HttpException } from "../utils/error-util";
function errorMiddleware(error: HttpException, req: Request, res: Response, next: NextFunction) {
console.log("\x1b[33m%s\x1b[0m", error);
const status = error.status || 500;
res.json({
status: status,
message: error.message,
});
}
export { errorMiddleware };

 

 

2. error util

 

다음과 같이 예외도 처리할 수 있는 함수를 만들었다.

class HttpException extends Error {
status: number;
message: string;
constructor(status: number, message: string) {
super(message);
this.status = status;
this.message = message;
}
}
export default HttpException

 

 

3. app.ts

 

에러미들웨어는 라우터 express 애플리케이션에서 가장 마지막에 넣어주어야 한다.

 

app.use("/user", UserRouter);
app.use("/bookmark", BookMarkRouter);
app.use("/schedule", ScheduleRouter);
app.use("/checklist", ChecklistRouter);
app.use(errorMiddleware);

 

 

4. 에러 처리

 

새로 만든 함수로 statusCodeerrorMessage를 함께 보내주면 구현이 완료된다.

 

if (!user) {
throw new HttpException(401, "해당 이메일은 가입 내역이 없습니다. 다시 한 번 확인해 주세요.");
}

 

 

이때 상태번호를 보내주어야 하기 때문에 HTTP 상태코드에 대해서도 공부했다.

 

위의 코드에 401은 인증이 필요하여 권한 없음을 의미하는 코드이다.

 

자세한 내용은 아래 Reference 블로그에서 확인할 수 있다.

 

 


📌 Reference

반응형

댓글