728x90
데이터 값을 받아올 때 가장 쉽게 마주할 수 있는 오류는 NullPointerException(NPE) 이다 .
보통 객체 값이 null이거나 초기화가 안되어있는 인스턴스를 사용하면서 NPE를 마주하게 된다.
- null 객체에서 method를 호출하는 경우
- null 객체의 필드에 접근하거나 값을 변경하는 경우
- null 의 길이를 배열처럼 취하는 경우
- null 을 throw 하는 경우
- null 을 통해 동기화 할 경우
public class Sample {
public static void main(String[] args) {
Go go = null;
go.toString(); // NullPointerException
go.equals(""); // NullPointerException
go.length(); // NullPointerException
go.name; // NullPointerException
}
}
이러한 오류를 피하기 위해 항상 Null 체크가 필요하다.
간단하게 다음과 같이 할 수 있다.
if (param != null) {
//do something
}
Null 값을 체크하는 것도 중요하지만, 비어있는 String 값("")이 들어가있는 경우를 체크해야하는 경우도 있다.
1. 앞 조건에서 null 체크 후에 빈 값을 체크
if (param != null && !param.equals("")){
// do something
}
if (param != null && param.length() != 0){
// do something
}
2. Spring 에서 String 값을 validate 하고싶으면 StringUtils를 이용하면 된다.
import org.springframework.util.StringUtils;
if (StringUtils.hasText(sample)){
// do something
}
StringUtils 클래스의 hasText 함수는 null, 빈값, whitespace 로만 이루어져있는 String 을 모두 체크한다
public static boolean hasText(@Nullable String str) {
return str != null && !str.isEmpty() && containsText(str);
}
728x90
'Java' 카테고리의 다른 글
[Java] JVM 동작 및 실행 과정 (0) | 2022.09.28 |
---|---|
[Java] JVM, JRE, JDK? (0) | 2022.09.28 |
[Java] 자바(Java)의 역사 (0) | 2022.09.27 |
[Java] JSON 파싱하기 (jackson/gson/json-simple) (1) | 2021.10.16 |
[Java] HashSet 합집합 add(), addAll() 시 UnsupportedOperationException 날 경우 (0) | 2021.06.29 |