티스토리 뷰

ECMA2022 에서 Error Cause 메서드가 나왔는데 이를 이용하여 좀 더 구체적인 에러 메시지 추가가 가능해졌습니다.

예를 들어, api 를 try/catch 를 이용해서 에러 예외 처리한다고 하면 아래와 같이 "user.api 호출하다가 무슨 에러가 발생하였습니다"와 같이 throw 를 날려줍니다.

try {
  const res = await user.api();
  return res;
} catch (err) {
  throw new Error("user.api error");
}

이를 cause 메서드를 이용하면 좀 더 구체적으로 에러 표시가 가능해집니다.

try {
  const res = await user.api();
  return res;
} catch (err) {
  throw new Error("user.api error", { cause: err });
}

이렇게 만들어지면 아래와 같이 받아서 사용할 수 있게 됩니다.

try {
  // ...
} catch(err) {
  console.log(err.message, err.cause)
}

좀 더 추가작업으로 진행하면 try 에서 throw 와 catch 에서 throw 를 구분지어서도 사용할 수 있겠습니다.

예를 들어 api 통신은 200 으로 정상동작했지만, res 가 없는 경우가 발생한 경우에 대한 에러처리 입니다.

try {
  try {
    const res = await user.api();
    if (res) {
      return res;
    }
    throw new Error("user.api error", { cause: { noRes: true } })
  } catch (err) {
	const cause = err.cause || err
    throw new Error(err.message, { cause });
  }
} catch (err) {
   // err.cause.noRes 가 true면 api 는 200 이지만, res 가 없는 경우.
  console.log(err.message, err.cause)
}
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함