업무 관련 개발 작업 도중 이상하게 NullPointerException 을 자주 본 날입니다.
이런 실수 잘 하지 않는데 너무 많이 봐서...
그래서 이제 이런 실수 하지 말자고 제 스스로를 채찍질 하려고 글을 남깁니다.
■ NullPointerException 발생 원인
NullPointerException 이 발생하는 원인은 사용할 객체를 생성 후 인스턴스를 생성하지 않고 null 오브젝트를 사용하려 할 경우 발생 합니다.
TestObject a = null;
String b = a.getTestResult();
b.toString();
null 을 참조 하여 NullPointerException 이 발생하게 됩니다. 이는 아래와 같이 간단히 객체 생성으로 해결 할 수 있습니다.
TestObject a = new TestObject();
String b = a.getTestResult();
b.toString();
위와 같이 제대로 선언까지 했는데도 불구하고 NullPointerException 이 발생한다면 참조하는 값인 s.getTestResult() 자체가 Null 인 경우입니다.
위 코드를 기준으로 봤을때 a.getTestResult() 가 null 이므로 b 값도 null 이고 이 null 값을 toString() 함으로 인해 NullPointerException 이 발생하게 되는 겁니다.
■ NullPointerException 방어 코드
NullPointerException 은 자주 발생하면서도 얼마든지 예방이 가능합니다.
방어 코드를 아래와 같이 넣어 줄수 있습니다.
TestObject a = new TestObject();
String b = a.getTestResult();
if(b != null) {
b.toString();
}
위 코드와 같이 null 체크를 하는 겁니다.
null 일 경우 toString 을 하지 않음으로 NullPointerException 을 피할 수 있습니다.
저도 실수 몇 개로 몇번의 오류를 봤는지 모르겠습니다. ㅠㅠ
이런 실수 하지 않도록 정신 차리고 개발 해야 겠습니다 :)
'Java' 카테고리의 다른 글
[ 자바 코딩 ] Java replace() vs replaceAll() (7) | 2017.11.20 |
---|---|
[ 자바 코딩 ] Java compareTo(), compareToIgnoreCase() 함수 (6) | 2017.11.15 |
[ 자바 코딩 ] 자바 charAt(), indexOf(), lastIndexOf(), length() (6) | 2017.11.14 |
[자바 코딩] 자바 랜덤 함수 (4) | 2017.09.29 |
[자바 코딩] 배열 정렬 Arrays.sort() (7) | 2017.09.28 |