본문 바로가기

Frontend/Javascript

숫자 범위 표현의 에러

기존에 이런 식으로 코드를 작성했었는데, 예외처리가 잘 되지 않았었다. 

 

기존 코드 

if (!keyword) { 
	throw new NotFoundException('검색 결과가 없습니다'); 
} 

const tokenId = Number(keyword); 

if (!isNaN(tokenId)) { 
	if (1<= tokenId <= 100) { 
    	query.andWhere(`table.numberId = :numberId`, { numberId }); 
   } else { 
   	throw new NotFoundException('검색 결과가 없습니다'); 
}  else { ~ 

} else if (keyword === '000') { 
	throw new NotFoundException('검색 결과가 없습니다'); 
 } else if ~

여기서 내가 간과하고 있던 점이, Javascript에서는 1<=tokenId<=100과 같은 표현을 사용하지 않고 

1<=tokenId && tokenId<=100 과 같은 수식 범위 표현을 사용한다는 것이다. 

 

이런 기초적인 지식이 부족해서, else if 문의 keyword === '000'에서 000이면 NotFoundException 에러처리를 해줘야 하는데, 200 OK status로 (데이터는 없지만) 상태값이 postman에서 계속 조회가 되는 문제가 발생하였다. 

 

아래와 같이 수정하니 keyword를 000으로 조회시 정상적으로 NotFoundException 에러를 내려주었다. 

 

수정된 코드 

if (!keyword) { 
	throw new NotFoundException('검색 결과가 없습니다'); 
} 

const tokenId = Number(keyword); 

if (!isNaN(tokenId)) { 
	if (1<= tokenId && tokenId <= 100) { 
    	query.andWhere(`table.numberId = :numberId`, { numberId }); 
   } else { 
   	throw new NotFoundException('검색 결과가 없습니다'); 
}  else { ~ 

} else if (keyword === '000') { 
	throw new NotFoundException('검색 결과가 없습니다'); 
 } else if ~