2010-12-27 4 views
1

Je fais donc une demande d'URL pour récupérer un flux de données dans un BufferedReader. Les données que je récupère ont des valeurs "nulles" pour différents champs. La condition alors que je me sers de lire toutes les données sont:résoudre NullPointerException en JAVA pour une demande d'URL

while (((inputLine = in.readLine()) != null)) 

si la condition est la rupture entre les deux, lorsqu'il rencontre une valeur null, qui est en fait pas le EOF mais seulement une valeur de champ. Comment résoudre ça?

+4

Veuillez indiquer la trace de pile exacte que vous obtenez. Un BufferedReader ne peut pas contenir de valeurs nulles. –

+0

Plus de détails s'il vous plaît. Liste d'appels de fonction d'où provient l'exception? Pour ce faire, placez un bloc try try autour du code et dans le catch, récupérez cette exception et obtenez des informations sur l'emplacement de l'exception afin de pouvoir répondre à la question: l'exception a-t-elle été rejetée par le système Java? valeur dans votre code ou du code de la bibliothèque? – therobyouknow

+0

+1 @Martin v. Löwis m'a battu à ça! le vôtre est un conseil plus succinct pour @wishy! – therobyouknow

Répondre

6

Lorsque vous lisez une ligne, il jamais être null jusqu'à ce qu'il atteigne la fin des données. S'il n'y a pas de données dans la ligne, ce sera juste une chaîne vide à la place.

Vous n'avez pas montré assez de code pour expliquer pourquoi vous obtenez un NullPointerException, mais vous devez vraiment comprendre que vous ne verrez aucune "valeur nulle" avant d'atteindre la fin des données.

Pour comprendre pourquoi vous obtenez un NullPointerException:

  • Regardez la ligne indiquée dans la trace de la pile
  • Identifier toutes les opérations déréférencement
  • soit mettre un point d'arrêt sur cette ligne, ou ajouter un peu de journalisation, ou diviser la ligne en plusieurs déclarations de sorte que chaque instruction a une seule opération de déréférencement

Cela devrait vous permettre de travailler exactement quelle valeur est null, provoquant l'exception à être levée. Ce que vous devez faire pour le réparer dépendra de ce que vous essayez de faire et de la valeur nulle - nous n'avons pas assez d'informations pour vous aider sur ce front pour le moment.

+0

Excuses de ne pas encadrer la question correctement .. !! L'exception NullPointerException est lancée sur: String s_i = jobj1.get ("id"). ToString(); , où jobj1 est un JSONObject et la valeur de "id" est nulle – wishy

+0

@wishy: La valeur de "id" ne sera jamais nulle - c'est un littéral de chaîne. La valeur de retour de 'get (" id ")' peut bien être nulle, auquel cas c'est clairement le problème ... mais cela ne nous donne aucune idée de la façon dont vous voulez procéder quand * est * null. –

+0

oui, je devenais confus. Un mécanisme de gestion NullPointException simple a fonctionné. Je m'excuse encore de ne pas être clair dans ma requête. – wishy