2010-10-16 3 views
0
String graphNameUsed = graphName.getName(); 
     if (graphType.equals("All") || graphType.equals("ALL")) 
      graphNameUsed += "_ALL"; 

Si ma chaîne est nulle, alors il va jeter NullPointerException quand je vérifie si elle est égale ou non. Pour éviter cette exception, comment dois-je vérifier?Éviter un NullPointerException

Répondre

4

Retournez les comparaisons dans l'autre sens si vous appelez equals() sur la chaîne littéraux, qui ne sont pas nuls et ne provoqueront donc pas l'exception. Lorsque la valeur null est transmise à la méthode equals(), elle renvoie simplement false immédiatement. Cependant, si vous essayez de l'appeler sur une variable null, l'objet n'est pas là pour que vous appeliez cette méthode, ce qui explique pourquoi vous obtenez l'exception.

if ("All".equals(graphType) || "ALL".equals(graphType)) 

Si vous voulez juste faire les matchs insensibles à la casse, utilisez la méthode equalsIgnoreCase() à la place que vous effectuez simplement une vérification:

if ("All".equalsIgnoreCase(graphType)) 
+0

Comment dis-tu que mon code peut lancer une attente de pointeur nul et pourquoi ce code que tu as écrit ne jettera pas? – John

+0

y a-t-il une meilleure façon de gérer de telles expections ... je veux dire via la gestion des attentes – John

+0

@John: La solution que nous avons fournie est bien meilleure que de placer un 'catch (NullPointerException e)'. Mieux vaut prévenir que guérir. – BoltClock

3

Que diriez-vous:

if("All".equals(graphType) || "ALL".equals(graphType)) 

Et vous pouvez profiter de court-circuit avec quelque chose comme:

if(graphType != null && (graphType.equals("All") || graphType.equals("ALL"))) 
+2

Note: '' == compare les références, non valeurs. – BalusC

+0

@BalusC enlevé. –

Questions connexes