개인 자료란 (JE)

  서버 커뮤니티

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

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

java.lang.NullPointerException

2020.01.19 조회 수 645 추천 수 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/115/774/003/262x150.crop.jpg?20240424234825

업데이트

마인크래프트 1.20.5 정식 업데이트

학교가기싫다

2024-04-24

0

/files/thumbnails/762/770/003/262x150.crop.jpg?20240418073724

레드스톤

T.B.H (고민중독) | 노트블럭 버전 | NoteBlock Cover [한국어 영어 중국어 가사 추가]

노트블럭전문가

2024-04-18

0

/files/thumbnails/218/767/003/262x150.crop.jpg?20240412130213

레드스톤

우리의 꿈 - 원피스 오프닝

노트블럭전문가

2024-04-12

0

/files/thumbnails/505/766/003/262x150.crop.jpg?20240411122306

레드스톤

기동전사 건담 수성의 마녀 | 노트블럭 커버 1

노트블럭전문가

2024-04-11

1

/files/thumbnails/932/765/003/262x150.crop.jpg?20240410124459

레드스톤

마인크래프트 노트블록으로 만든 『 밤양갱 (Bam Yang Gang) 』

노트블럭전문가

2024-04-10

0