- null 때문에 발생하는 Runtime Exception
- String 처리
- FileIO 처리
- 서버 송수신 처리
- null 자체의 의미가 모호해 다양한 파생 에러 발생
- 에러 발생 이후 디버깅이 매우 어렵다고 함
- null 객체의 인스턴스 메서드를 호출합니다.
Object obj = null; obj.toString();
- null 객체의 필드 액세스 또는 수정.
Person p = null; p.name = "nhj";
- 빈 배열 객체에 길이 속성을 가져올 때
int[] arrayInts = null; arrayInts.length;
- 배열 슬롯 중 null 인 액세스하거나 수정합니다.
String[] arrayStr = new String[2]; arrayStr[0] = "aa"; arrayStr[1].toString();
- Throwable 값인 것처럼 null을 던집니다.
throw null;
1. 초기화시, null이 없도록 한다.
(1) String str = "";
(2) String[] arrStr = new String[0]; arrStr[0]="";
(3) List list = new ArrayList();
2. 길이 체크 및 빈 값 체크 등은 공통 유틸리티를 만들어 사용한다.
ex)
int length(String str){
if(str == null) return 0;
return str.length();
}
3. 의미없는 null 파라미터 사용하지 않기
int length(){
.....
return null;
}
4. null 여부 확인 및 비교 처리 하기
ex) (baka = null) ? "0" : baka.length();
5. 문자열 비교는 Literal 기준이어야 한다.
ex)
String nemo = null;
if("MEMO".equals(nemo)){}
6. toString() 대신 valueOf() 사용
toString()은 객체를 참조해야만 하므로, 객체가 null일 경우 NPE를 발생시킵니다.
하지만, valueOf()는 반환을 하기에 null값을 반환하면 "null"자체를 반환시켜 줍니다.
* toString()
Integer num = null;
System.out.println( num.toString() ); 에러
* valueOf()
String str = null;
System.out.println( str.toString() );