[Node.js] Throw of exception caught locally

Falcon·2022년 6월 3일
1

javascript

목록 보기
16/28

try-catch throw 시 흔히 하는 실수

try {
  // 어떤 조건식
  if (!userId) {
    throw new NotExistUser('Not found user');
  }
} catch (err: unknown) {
  if (err instanceof NotExistUser) {
	return err;
  }
}

⚠️ IDE warning

프로그램은 정상 작동하겠지만 WebStorm 에서 다음과 같은 메시지로 경고 문구를 띄운다. 왜 그럴까? 😲

try-catch 의 Exception 은 "무슨 문제가 생길지 모를 때" 쓰는 것이다.

Exception이란 개발자가 "미처 예상하지 못한" 예외 상황이다.

💡 무엇이 문제인지 아는 순간, 예외가 아니다.

첫 예시 코드를 다시 돌아보자.

try {
  // Find user id
  if (!userId) {
    throw new NotExistUser('Not found user');
  }
} catch (err: unknown) {
  if (err instanceof NotExistUser) {
	return err;
  }
}

여기서 우린 "해당 ID 가 존재하지 않음" 이라는 상황을 이미 안다.
👉🏻 이는 예외(exception)가 아니다.

💡 예상할 수 있는 에러는 로컬 블록 내에서 처리하자.

try {
 
  if (!userId) {
    // ✅. try 블록 내에서 곧바로 핸들링.
    return new NotExistUser('Not found user');
  }
} catch (err: unknown) {
  // 내가 예상할 수 없는 error 들
  if (err instanceof Error) {
	return err;
  }
}

📝 결론

  • 예상 가능한 에러는 try 로컬 블록 내에서 처리하자.
  • try-catch의 catch 블록에서 exception 핸들링은 개발자가 "미처 예상하지 못한 에러"를 위한 것이다.

🔗 Reference

profile
I'm still hungry

0개의 댓글