🗃️ 내가 다시 볼 것

에러 처리를 어떻게 하면 좋을까?(throw new Error를 사용하자!)

전호영 2023. 12. 11. 19:43

과제를 하며 내가 작성했던 에러 처리 코드는 다음과 같다.

 

  signup = async (req, res, next) => {
    try {
      const { email, name, password, passwordCheck } = req.body;
      if (password !== passwordCheck) {
        return res.status(400).json(
          response({
            status: 400,
            message: "비밀번호가 일치하지 않습니다."
          })
        );
      }
      ...
    } catch (error) {
      next(error);
    }
  };

 

모든 응답을 response라는 모듈을 만들어 형식을 일치시켰다.

내가 걸러내지 못한 에러는 catch문으로 에러를 반환했다.

반환값을 통일하는 방법(내가 사용한 방식)과 throw new Error를 사용한 방법, 이 두 방법 모두 사용자가 받는 형식은 동일하다.

그러나 에러의 경우 throw new Error로 처리하는 것이 좋다.

내가 사용한 방식의 단점은

 

1. 에러 발생 시 결과값을 사용자에게 바로 전달하기에 로그가 남지 않는다.

2. 반환값을 전부 통일해버리면, 코드를 읽는 입장에서 정상적인 상황인지, 에러인지 바로 알아채기 좀 어렵다.

 

위 코드를 수정해보자.

 

 signup = async (req, res, next) => {
    try {
      const { email, name, password, passwordCheck } = req.body;
      if (password !== passwordCheck) {
        throw new customError(
          400,
          "Bad Request",
          "비밀번호가 일치하지 않습니다."
        );
      }
      ...
    } catch (error) {
      next(error);
    }
  };

 

에러처리는 throw new Error를 통해 하자!