2012-05-19 2 views
-1

У меня есть ситуация, когда я могу столкнуться с возможным значением null, и я не хочу, чтобы моя программа вылетала. это происходит только для небольшого% пользователей, и я не совсем уверен, почему, но я знаю раздел кода, который это делает. в основном isAchieved() - это проверка, которая должна возвращать логическое значение, но в некоторых случаях она возвращает нуль. это часть библиотеки scoreloop, и у меня есть подозрение, что ошибка может быть связана с их кодом.избегая возможного null в android

вместо того, чтобы заставить силу закрыть и выйти из программы, есть ли способ проверить, будет ли это значение возвращать нуль и просто пропустить этот раздел кода, если это так?

if (_achievements[ltc].isAchieved()) { 
    // Do stuff for 99.9% of users here, but skip if .isAchieved() would force close 
} 
+2

Поймать исключение? (Не рекомендуется проверять исключения во время выполнения, о которых вы, похоже, знаете, но это вариант). Вы также можете сделать оператор if. То есть msgstr "если null, не делайте этого". – keyser

ответ

1
 boolean checker=false; 
     try{ 
      checker=_achievements[ltc].isAchieved(); 
     } 
     catch(NullPointerException e){ 
     } 
     if (checker) { 
      //content 
     } 

Вы думали о том, что делать ?.

+0

, который не даст мне NullPointerException для проверки? я не могу проверить это, поскольку это происходит только с таким небольшим количеством пользователей, и я не могу воспроизвести ошибку. – clayton33

+1

Это не даст исключение, если функция фактически возвращает null. Кроме этого. В противном случае вы должны использовать try catch. – Niranjan

+0

Да, я пошел с методом try/catch, спасибо. – clayton33