본문 바로가기
Error

[Java] java.lang.NullPointerException(feat. null과 isEmpty())

by kkaboo 2023. 12. 28.
728x90

 

공통 다국어 기능을 추가하는 중에 에러가 발생했다.

다국어 메인화면과 다국어 팝업이 같은 저장 메서드를 타고 있었는데, 다국어 메인화면에만 기능이 추가되면서 다국어 팝업 저장 쪽에서 발생한 에러이다.

 

NullPointerException

 

초반 해결

다국어 메인화면쪽에서 백단으로 보내는 리스트가 하나 추가되었기 때문에 다국어 팝업쪽에서 올 때는 null 리스트를 건너뛰는 조건문을 걸어주면 될거라 생각했다.

if(!list2.isEmpty() || list2 != null) {
  Iterator tooltipIter = list2.iterator();
  ...
}

컨트롤러 단에선 에러없이 넘어온 상황이어서 위와 같이 코드를 작성하면, null인 경우에는 해당 조건문의 로직을 타지 않고 빠져나갈 줄 알았다. 

 

 

하지만 NullPointerException은 계속 발생했고ㅠㅠ

원인을 못찾아서 한참 고민하다가 다국어 팝업쪽에서 빈 배열을 보내는 방법으로 해결했다.

 

그리고 서비스단 조건도 size()로 변경해줬다.

if (list2.size() != 0) {
  Iterator tooltipIter = list2.iterator();
  ...
}

 

 

해결 완료

 

알고보니 NullPointerException이 걸리는 이유는 !list2.isEmpty() 때문이었다.

리스트 객체가 null이라면, isEmpty() 메서드 호출 시 NullPointerException이 발생한다고 한다.

 

다국어 메인화면에서 list2에 리스트가 넘어오는 경우는 처음 작성했던 조건문이 잘 실행됐지만 다국어 팝업에서 list2에 리스트가 넘어오지 않아 null인경우에는 isEmpty()에 의해 에러가 발생했던 것 이다.

 

다국어 팝업쪽에 추가 해줬던 빈 배열을 삭제하고

if(list2 != null && list2.size() > 0) {
  Iterator tooltipIter = list2.iterator();
  ...
}

조건문을 위와 같이 변경해 주니 잘 작동 됐다.

 

 

아직 갈길이 멀다~!!!

728x90