2014-10-10 2 views
0

정말 이해가 안되는 이유는 무엇입니까? java.lang.NumberFormatException : Invalid long : "null"이 여기에서 발생합니다.문자열 null 또는 빈 검사 후에도 Android Java 예외가 발생했습니다.

문제는 다음과 같습니다.

try { 
     userid = ((JSONObject) msg.obj).getString("userid"); 
     if (userid.equals("") || userid.isEmpty() || null==userid) { 
       onClickLogout(); 
       return; 
     } else { 
      client.setUserid(Long.parseLong(userid)); 
     } 
    } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      onClickLogout(); 
      return; 
    } 

line client.setUserid (Long.parseLong (userid)); 뒤에 오는 예외를 얻는다

java.lang.NumberFormatException: Invalid long: "null" 
at java.lang.Long.invalidLong(Long.java:125) 
at java.lang.Long.parse(Long.java:362) 
at java.lang.Long.parseLong(Long.java:353) 
at java.lang.Long.parseLong(Long.java:319) 
at client.setUserid(Long.parseLong(userid)); 

중요한 점은 null과 코드에서 사용자 ID의 빈 검사 후에도 null 예외가 발생한다는 것이다. 나랑 무슨 상관이야? 전문가를 확인해주세요!

+2

equals를 호출하는 대신 사용자 ID가 null인지 먼저 확인하십시오. 그렇지 않으면 NPE로 실행될 수 있습니다. –

+0

질문을 편집했습니다. 확인하십시오. 이것은 가능한 NullPointerException을 피할 수 있습니다. 또한 @laalto의 answer를 추가해야합니다. –

+0

아, 죄송합니다. @PedroOliveira. 방금 내 의견을 보았습니다 xD –

답변

2

문자열 값이이고 참조는 null이 아닙니다.

null 값을 if의 "값 없음"으로 검사 할 때 "null".equals(userid)을 추가하여 테스트 할 수 있습니다.

+0

고마워요! 이상한 것은 userid = ((JSONObject) msg.obj) .getString ("userid"); ""또는 일부 숫자 만 가져옵니다. ""관련된 사용자 ID 번호가없는 경우를 다루고 있습니다. null 케이스는 사실 여기에 불가능한 경우입니다. 이 경우는 드물게 발생합니다. Google 보고서를 통해이 사례를 보았습니다. 이번에는 귀하의 솔루션을 사용해 보겠습니다. 감사! –

1

은 항상 조건의 다음 요소에,

if (null==userid || userid.isEmpty() || userid.equals("null") { 

그런 다음 조건에 널 (null) 값을 먼저 확인, 당신은 사용자 ID가 null는 아니고, 어떤 경우 NullPointerException이 또한

을 발생하지 될 것이라고 확신합니다 귀하의 경우 사용자 ID에 "null"문자열이 포함되어 있지 않은지 확인하십시오.

userid.equals("")userid.isEmpty()은 같은 것입니다.

+0

댓글을 주셔서 감사합니다. laalto는 당신의 천둥을 훔쳤다! –

0

당신은 TextUtils에서 유틸리티 메소드 isEmptynull을 확인

public static boolean isEmpty(CharSequence str) { 
    return str == null || str.length() == 0; 
} 

isEmpty(CharSequence str) 방법 null 및 길이, 두 상태를 확인할 수 있습니다.

관련 문제