개인 자료란 (JE)

  서버 커뮤니티

Profile 배고픈상어-효묘 대표칭호 없음
Profile

커뮤니티 소통 개발하기 잡담

java.lang.NullPointerException

2020.01.19 조회 수 668 추천 수 0

Java공부하는데 진짜 힘드네요... 저거 뜨면 뭐가 잘못된건지 찾기 힘들어요ㅠㅠ




5개의 댓글

camelCase
2020.01.19

제 경험상 초보분들이 널포인터를 잡기 어려워 하는 이유는..

aaa.getA().getB().getC().task();

요런식으로 길게 이어서 쓰는것을 메소드 체이닝이라고 합니다. 요렇게 코딩하시면 널포인터 떴을때 오류잡기 힘들어요

A a = aaa.getA()

B b = a.getB()

C c = b.getC()

c.task()

이렇게 다 풀어쓰시면 몇번라인에서 오류났는지 찾기 쉬울 뿐더러 중간에 print문 하나 껴서 쉽게 디버깅 할 수 있습니다.

 

널포인터를 미연에 방지하는 방법은 버킷 API 끌어다 쓸때 그 함수가 null을 반환할 가능성이 있는지(nullable한지) API문서에서 확인하고 if문으로 처리해주는 방법이 가장 깔끔합니다.

 

아니면 java optional이라고 객체를 한번 더 감싸서 null을 깔끔쓰하게 처리하는 방법이 있으니 한번 찾아서 공부해보세요 

@camelCase

음.. 저는 다른 경우였는데 나중에 또 오류나면 참고해볼게요 감사합니다!

네모
2020.01.20

Java를 자주 사용하지는 않습니다만.. 팁을 드리자면..

 

1. 메소드 체이닝 사용 자제하기

o.funcA().funcB(); 말고

A a = o.funcA(); B b = a.funcB(); 사용.

 

2. 의미없는 null 파라미터 전달하지 않기

 

3. null 여부 확인 로직 추가하기

nullable 한 함수일 경우 가능하면 체크하는게 좋겠죠?

String A = null; if(a != null){ exec(); }

 

4. 문자열 비교는 non-null 기준의 equals 사용하기

if(a == "hello"){} 는 당연히 아니고

if(a.equals("hello"){} 도 말고

if("hello".equals(a)){} 로 사용.

 

5. toString 보다는 valueOf 사용하기

a.toString() 사용시 a 가 null 이라면 NPE 발생.

String.valueOf(a) 사용하면 NPE 미발생.

wysohn
2020.01.20

사실 뜨는게 더 나을수도 있습니다 뭔가 문제는 있는데 오류도 딱히 안뜨면 많이 곤란하죠

윈초
2020.02.12
@wysohn

?! 맞아요 안뜨다가 중간에 뜨면..;

뉴스 및 창작물
/files/thumbnails/761/908/003/262x150.crop.jpg?20241025153749

건축

서울 숭례문(崇禮門) 4

KHC

2024-10-25

2

/files/thumbnails/578/899/003/262x150.crop.jpg?20241010142350

건축

경주 월정교 1

KHC

2024-10-10

2

/files/thumbnails/219/899/003/262x150.crop.jpg?20241009200950

건축

송전탑+도시 2

dbasd12

2024-10-09

2

/files/thumbnails/246/898/003/262x150.crop.jpg?20241008102328

레드스톤

단다단 - 오토노케(オトノケ) | 마인크래프트 노트블럭 커버

노트블럭전문가

2024-10-08

1

/files/thumbnails/348/896/003/262x150.crop.jpg?20241006103035

디도스/봇테러등등을 낚는 방법 4

물귀신

2024-10-06

3