throw
시 흔히 하는 실수try {
// 어떤 조건식
if (!userId) {
throw new NotExistUser('Not found user');
}
} catch (err: unknown) {
if (err instanceof NotExistUser) {
return err;
}
}
프로그램은 정상 작동하겠지만 WebStorm 에서 다음과 같은 메시지로 경고 문구를 띄운다. 왜 그럴까? 😲
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;
}
}