Exception de Pointeur Null dans un bloc try catch
Obtenir l'erreur d'exécution suivant, ce qui provoque ma demande de crash au lancement
E FATAL EXCEPTION: MonitoringThread 13533 AndroidRuntime E
Processus: foo.com, PID: 13533 13533 AndroidRuntime E
java.lang.NullPointerException 13533 AndroidRuntime E à
foo.com$MonitoringThread.exécuter(foo.java:125) 13533
AndroidRuntime E en java.lang.Fil de discussion.exécution(Thread.java:841)
La ligne incriminée est
ret = mConnection.getInputStream().read(buffer);
dans l'extrait de code suivant
try {
ret = mConnection.getInputStream().read(buffer);
} catch (IOException e) {
break;
}
Quelqu'un peut-il suggérer des mesures à prendre pour essayer de déboguer?
Je pensais que l'utilisation d'un bloc try catch permettrait d'éliminer tout pointeur null erreurs.
- Avez-vous initialisé
mConnection
? - non, un essai bloc catch ne pas se débarrasser des erreurs. Je vous donne juste la possibilité de réagir sur eux
- où est
mConnection
initialisé? - vous êtes de prendre que des IOException !!
- Aussi, lorsque vous prenez une exception, vous devez faire quelque chose avec elle comme l'affichage d'un message, modifier une variable, etc... pas juste le laisser s'asseoir et de ragoût
Vous devez vous connecter pour publier un commentaire.
Vous ne devez pas utiliser les blocs try /catch pour éliminer pointeur null exceptions. Pointeur Null exceptions doivent être transmis, pour laisser programmeur savez que le problème se pose et où.
Dans votre cas, vous êtes attraper IOException, donc ce n'est pas NullPointerException.
Également vérifier ce qui est null qui est à l'origine de cette exception, peut-être son mConnection ? ou getInputStream() renvoie la valeur null.
À partir de cet exemple, vous pouvez également voir que, de son mieux pour ne pas exécuter beaucoup de méthodes en une seule ligne:
il est mieux d'écrire:
de cette façon, vous saurez à partir de la pile où NPE origine,
si votre code est dangereux, comme vous le savez, vous pouvez obtenir nullpointer à partir d'une certaine méthode, puis il suffit de le vérifier:
Devrait résoudre le problème
Il ya un couple de possibilités. Soit
mConnection
estnull
,getInputStream()
retournenull
, oubuffer
estnull
et laread()
méthode est de lancer le NPE. Ma meilleure supposition seraitmConnection
estnull
, c'est là que je commencerais.