목차
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가지를 생각하며 개발하는 습관을 기르자.(나에게 하는 말)
'IT > development' 카테고리의 다른 글
[thyemeleaf] select option값 list loop (0) | 2023.04.26 |
---|---|
INSERT/UPDATE template(feat. 엑셀 CONCATENATE) (0) | 2023.03.05 |
[spring] vo와 multipartFile 동시에 서버로 전송(feat.@RequestPart) (2) | 2023.02.08 |
[java] PKIX path building failed 해결방법(HTTPS 통신 에러) (2) | 2023.02.01 |
[devTool] postman으로 파일 전송 테스트 (0) | 2023.01.30 |