2014-10-10 3 views
0

Я действительно не понимаю, почему java.lang.NumberFormatException: Недопустимый длинный: здесь происходит «null».Исключение Java Java даже после строки null или пустой проверки

Сброс проблемы, как и следящий.

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)); 

Дело в том, что нулевое исключение возникает даже после нулевой и пустой проверки идентификатора пользователя в коде. Что случилось со мной здесь? пожалуйста, ознакомьтесь с экспертами!

+2

Проверьте сначала, если идентификатор пользователя null, а не называет равным, иначе вы можете столкнуться с NPE –

+0

. Я отредактировал ваш вопрос, пожалуйста, проверьте. Это может исключить возможное исключение NullPointerException. Кроме того, вы должны добавить @laalto 'sanswer. –

+0

О, извините @PedroOliveira. Я только что видел ваш комментарий xD –

ответ

2

Строка значение а не ссылка null.

Вы можете добавить "null".equals(userid), чтобы проверить литературу null значение в if, где вы проверяете различные формы «нет значения».

+0

Спасибо, ребята! Странная вещь здесь заключается в том, что userid = ((JSONObject) msg.obj) .getString ("userid"); получает только "" или некоторые числа. «" охватывает случаи, когда нет соответствующего номера идентификатора пользователя. нулевой случай на самом деле является невозможным. и этот случай случается редко. Я видел это дело только через отчет Google. На этот раз я попробую ваше решение. Благодаря! –

1

Всегда проверяйте первым для нулевого значения в вашем состоянии

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

Тогда в следующем элементе вашего состояния, вы уверены, что идентификатор не является нулевым, и ни NullPointerException не будет выброшена

Кроме того, в вашем случае убедитесь, что идентификатор пользователя не содержит строку «null»

Кроме того, userid.equals("") и userid.isEmpty() - это то же самое.

+0

Спасибо за ваш комментарий! лаалто украл твой гром! –

0

Вы можете проверить null методом утилиты isEmpty из TextUtils,

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

isEmpty(CharSequence str) метод проверки как условие для null и длины.

Смежные вопросы