728x90
반응형
[에러 메시지]
java.lang.NumberFormatException: For input string: "null"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Long.parseLong(Long.java:589)
at java.lang.Long.valueOf(Long.java:803)
at common.SysCommon.setMoneyCommaFormaty(SysCommon.java:961)
...
1. 원인
NumberFormatException의 'null' 에러는 null값을 숫자로 변환하려고 할 때 발생한다.
이 문제를 해결하려면,
변환하려는 값이 null인지 확인 후 null일 경우 적절한 대체 값을 사용하도록 코드를 수정해야 한다.
2. 해결
반환되는 ACnt와 BCnt가 null 값일 경우, NumberFormatException의 null 에러가 발생할 수 있다.
null 값으로 그대로 반환되는 것을 막기 위해 null 값 처리를 해줘야한다.
기존 코드
@SuppressWarnings("unchecked")
public Object selectInfo(Object obj) {
Object[] returnObj = new Object[3];
ArrayList<InfoDTO> dto = null;
int ACnt = 0;
int BCnt = 0;
try {
HashMap<String, Object> resultMap = InfoDAO.selectCount(sqlMap, null);
if (resultMap != null) {
ACnt = (Integer) resultMap.get("ACnt"); //수정 필요
BCnt = (Integer) resultMap.get("BCnt"); //수정 필요
}
returnObj[0] = ACnt;
returnObj[1] = BCnt;
} catch (Exception e) {
e.printStackTrace();
}
return returnObj;
}
}
수정 코드
@SuppressWarnings("unchecked")
public Object selectInfo(Object obj) {
Object[] returnObj = new Object[3];
ArrayList<InfoDTO> dto = null;
int ACnt = 0;
int BCnt = 0;
try {
HashMap<String, Object> resultMap = InfoDAO.selectCount(sqlMap, null);
if (resultMap != null) {
ACnt = resultMap.get("ACnt") != null ? (Integer) resultMap.get("ACnt") : 0; //null값 처리
BCnt = resultMap.get("BCnt") != null ? (Integer) resultMap.get("BCnt") : 0; //null값 처리
}
returnObj[0] = ACnt;
returnObj[1] = BCnt;
} catch (Exception e) {
e.printStackTrace();
}
return returnObj;
}
}
이런 형식으로 데이터가 null로 반환될 수 있는 가능성을 가진 객체를
null이 아니면 객체값 그대로 반환하고, null이면 0값으로 대체하여 반환하게 처리해주면 된다.
데이터의 특성을 잘 파악하고 그에 맞는 예외처리를 작성하는게 코드를 덜 수정하는 일인 것 같다.
728x90
반응형
'[Project] > 업무일지' 카테고리의 다른 글
[Java] 배민원, 쿠팡이츠 계산 예외처리 (0) | 2024.07.22 |
---|---|
[Java] 화면에 custcnt 데이터 반환 되지 않는 이슈 해결 (0) | 2024.07.18 |
[Java/XML/SQL/Oracle] NestedSQLException, SQLSyntaxErrorException: ORA-00911: invalid character (0) | 2024.07.17 |
[Java] NullPointerException (0) | 2024.07.17 |
[Java/XML/SQL/Oracle] RuntimeException, IllegalArgumentException (0) | 2024.07.12 |