IT/development

[java] list의 null 체크(ObjectUtils.isEmpty())

알 수 없는 사용자 2023. 2. 12. 14:04
반응형

목차

NPE 😂

    NPE(NullPointerException)는 java 개발하다 보면 정말 많이 만나는 에러 중 하나이고

    Null값인 대상을 가지고 뭔가 하려고 하면 발생하는 에러다.

    방지법은 공통모듈을 만들어 항상 null 체크를 하게끔 개발하는게 삽질을 줄이는 길일 듯 싶다.

    아래와 같은 상황에서 NPE가 발생한다.

    userList에 아무것도 할당되지 않은 상태인데 사이즈를 측정하려고 하다니?(미친건가?)

    List<UserDto> userList = null;
    log.info("userList => {}", userList.size());

     


    스프링으로 개발 시 보통 데이터를 list에 담아 화면에 뿌리거나 API 형식으로 클라이언트에 내리거나 할텐데

    list가 null이거나 빈값이 담기거나 사이즈가 0인 경우 등등 다양한 조건에 따라 NPE가 발생할 수 있다.

    공통 모듈로 만들어서 사용할 수도 있지만 유용한 메소드가 이미 있었다.

    org.springframework.util의 isEmpty()를 이용하면 되고 코드를 보면 아래처럼 여러 상황을 다 체크해 준다.

    parameter값이 null인지, obj가 어떤 타입인지 분기 후 길이나 값이 비었는지 체크한다.

    아래처럼 사용하면 된다. 

    개발 하면서 이렇게 NPE가 발생할 수 있는 경우는 전부 공통 모듈을 개발하거나 오픈소스의 메소드를 이용하거나 하는 방법으로 미리 차단을 해 놓는게 좋다.

    그리고 변수 생성 시 null이 아닌 값으로 초기화를 해 놓는게 좋다.

    정리 😄

    1. null체크는 미리 공통모듈 개발 혹은 오픈 소스의 메소드 이용

    2. 변수 선언 시 null이 아닌 값으로 초기화(이건 호불호가 있을 듯 하니 상황에 맞게끔 적절히 조화)

    위 2가지를 생각하며 개발하는 습관을 기르자.(나에게 하는 말)

    반응형