본문 바로가기
프로젝트 개발 기록/[개발] 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

반응형

댓글