Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- CRAWL
- 정규식
- MariaDB
- atlas
- spark
- dataset
- 테이블정의서
- okhttp3
- OkHttpClient
- 크롤링
- 쿠버네티스
- MSA
- replaceAll
- Java
- Python
- microservice
- 도커
- oracle
- web crawl
- Data Lineage
- container
- 컨테이너
- REST
- dataframe
- Prototype
- kubernetes
- docker
- 스파크
- RDD
- 파이썬
Archives
- Today
- Total
J 의 기록
NPE(NullpointException) 에 대한 고찰 본문
오늘은 개발자들을 괴롭히는 Null 그리고 NullpointException에 대해 다뤄보고자 한다.
개발을 하게 되면 NullpointException(NPE) 에 마주치곤 한다.
보통 개발자의 부주의 (파라미터로 Null이 들어올거란 생각을 안한다던가..) 로 발생하는데 이에 대해 가져야할 습관들, 즉 NPE 예방에 대해 알아보자
- toString() 이 아닌 String.valueOf()를 사용하자
toString()과 String.valueOf()의 차이는 NullpointException의 발생여부이다.
Object가 null일 경우 String.valueOf(Object)를 사용할 경우 "null"이라는 String이 반환된다.
Map<String, Object> inputParamMap = ...
// inputParamMap.get("value") 가 null인 경우
String case1 = String.valueOf(inputParamMap.get("value")); // "null"을 반환
String case2 = inputParamMap.get("value").toString(); // NullPointException 발생
// String.valueOf()의 null 체크
if("null".equals(case1)) {
...
}
// 참고
// equals함수는 왼쪽에 있는 것을 기준으로 비교하기 때문에 변수보다는 문자열을 왼쪽에 두는 것이 좋다.
String str = null;
/* Exception 발생 */
if(!str.equals("")) {
...
}
/* 정상 */
if(!"".equals(str)) {
...
}
- 함수에서 null을 리턴하지 말것.
함수에서 null을 리턴해야 하는 경우 빈 Collection객체를 반환하자. - null에 안전한 java 내장 함수를 사용하자
§ 주의 ) Java 의 getOrDefault() 함수
java의 getOrDefault() 함수는 Map에 해당 키가 존재하지 않을 경우 default값을 반환한다.
즉, key가 있는데 그 key의 값이 null이 아님을 보장해주진 않는다!
'개발' 카테고리의 다른 글
[okhttp3] okhttp3 를 이용한 get/post restclient (0) | 2021.04.01 |
---|---|
[MSA] MSA (Microservices Architecture)란? (0) | 2021.01.04 |
[Javascript] Javascript 에서 replaceAll() 구현하기 (0) | 2020.05.29 |
[Spark] RDD, Dataset, DataFrame의 차이 (0) | 2020.05.20 |
[ES] Elastic Search - spark (1) (0) | 2020.04.08 |