# TIL-20210924

# Today

  • CustomError 만들기

# Content

# 왜 Error를 Custom해야 하는가?

특정 API의 Response를 처리하는 과정에 Response가 정상 처리 (200번대 코드를 받았을 때) 되었지만,
response 데이터가 Error로 처리되는 경우가 있다.

해당 부분을 적용하기 위해 Data를 확인해서 Error Throw하는 방법으로 처리하기로 했다.

# Custom Error 작성하기

Javascript에서 Error는 Class를 통해 선언되이기 때문에, 클래스를 상속할 때 사용하는 extends를 통해 커스텀을 진행 할 수 있다. Error class에서는 status Field가 정의되어 있지 않기 때문에, custom Error를 작성하는 과정에서 Status를 설정하는 과정이 필요하다.

class CustomError extends Error {
  constructor(status = "-1", ...props) {
    super(...props);
    this.status = status;
  }
}

다음과 같이 작성한다면 CustomError 생성하는 단계에서 Status값을 넣어서 Error를 발생할 수 있게 된다.

// Axios 요청 모듈 처리
const res = await axios.post(somEndPoint, somthingReqBody);
if (res.data.resID === -1) {
  throw new CustomError(res.data.resID, "-1 에러 입니다.");
}

// Controller
try {
  // axios 요청 보내기
} catch (e) {
  if (e.status === "-1") {
    // -1 에러 처리
  }
  // -1 이외의 에러 처리...
}

위와 같이 Error에 임의적인 Status를 부여해 Error 상황을 강제로 발생시키고 해당 처리를 catch안에서 처리할 수 있도록 구현했다.