Custom으로 예외 처리를 하는 과정에서 , null 로 인한 에러가 발생했다.
public Object nameDuplicateCheck(@RequestBody Map<String, Object> paramsMap) throws CustomException {
Map<String, Object> result = new HashMap<String, Object>();
List<Map<String, Object>> list = ExampleService.nameDuplicateCheck(paramsMap);
if (list.isEmpty()) {
result.put("data", "사용가능 합니다.");
return result;
} else {
throw new CustomException(ExceptionStatus.DUPLICATED_NAME);
}
}
List.isEmpty()
는 리스트 객체가 어떤 요소를 갖고 있지 않을때 true 를 리턴한다.List.size()로 리스트가 비어있는지 확인
List.size()
는 리스트의 요소 개수를 리턴한다. 만약 리스트가 비어있다면 0을 리턴합니다. 리스트의 길이와 0을 비교하여 비어있는지 확인할 수 있다. 위와 마찬가지로, List 객체가 null일 가능성이 있다면 null check를 먼저 체크를 해줘야 함으로 아래와 같이 코드 작성하여 문제를 해결 했다.
if(list == null || list.size() == 0 ){ }
or
public Object nameDuplicateCheck(@RequestBody Map<String, Object> paramsMap) throws CustomException {
Map<String, Object> result = new HashMap<String, Object>();
List<Map<String, Object>> list = ExampleService.nameDuplicateCheck(paramsMap);
if (list != null && list.size() == 1) {
result.put("data", "사용가능 합니다.");
return result;
} else {
throw new CustomException(ExceptionStatus.DUPLICATED_NAME);
}
}
"List.isEmpty() vs List.size() : null 값" 처리 방법에 대한 내용을 정리한 내용 잘 봤습니다!!
여담으로...
List<Map<String, Object>> list = ExampleService.nameDuplicateCheck(paramsMap);
코드에서 list 를 가지고 어떠한 처리도 하지 않고 있기 때문에...
실제 개발하실 때는!!
boolean isDuplicate = ExampleService.nameDuplicateCheck(paramsMap);
로 처리하는게 더 좋을 것 같습니다!
"가능 vs 불가능" 을 따져서 클라이언트에 전달해주면 되는 부분으로 Exception 까지 처리하는건 불필요해 보여서요!
지나가던 나그네였습니다!