사내 서비스를 유지보수하던 중에 있었던 황당한 일이였습니다.
Solr 쿼리에 쿼리로서 q를 보내는 중에 숫자 -999 는 자꾸 잘못된 값이라는 버그가 발생.
해당 함수는 아래와 같다.
private Literal scanNumber() {
StringBuffer sb = new StringBuffer();
while (scanner.hasNext()) {
char ch = scanner.next();
if (!Character.isDigit(ch)) {
scanner.backward();
break;
}
sb.append(ch);
}
if (sb.length() <= 0) {
throw new QueryParseException("expected digit but not.");
}
return new Literal(new Token(TokenType.NUMBER, sb.toString()));
}
자칫하면, 해당 함수가 숫자를 판단할 수 있다고 빋을 수 있지만, 정답은 땡..!!
-999는 '-' 때문에 숫자로 판단하지 않는다!
조심하자!
'Programming Language 이해하기 > Java 이해하기' 카테고리의 다른 글
객체지향의 재사용성과 다이나믹 디스패치, 더블 디스패치에 관한 이야기 (0) | 2021.03.06 |
---|---|
replaceFirst()과 정규표현식의 실수 (0) | 2021.02.26 |
예외를 처리하는 Best Practice는 무엇일까?(with. 토비 스프링, 이펙티브 자바) (0) | 2021.01.04 |
마틴 파울러의 UnitTest 이해하기 - 번역본 (0) | 2020.10.18 |
기본 타입에 대한 강박관념(primitive Obsession) 에 대한 이해 (0) | 2020.09.27 |
댓글