Comment Corriger l’erreur java.lang.NullPointerException?

Je fais une condition avec une valeur quand elle est nulle et quand elle n’est pas nulle. Lorsque cette valeur est nulle, j’obtiens l’exception java.lang.NullPointerException.

Comment puis-je corriger cette erreur afin d’éviter cette exception ?

J’ai besoin de la condition lorsque la valeur est nulle et lorsqu’elle ne l’est pas.

Vous obtenez l’exception java.lang.NullPointerException lorsque vous essayez d’appeler une méthode en utilisant une variable qui est nulle. Voici un exemple simple :

String str = null;
int len = str.length();  // NullPointerException parce que str est nul

Vous devez donc vérifier si la variable est nulle avant d’appeler une méthode sur elle, par exemple :

int len;
if (str == null) {
    len = 0;
}
else {
    len = str.length();  // Bon, str n'est jamais nulle quand on arrive ici
}

Notez que l’exception NullPointerException est généralement facile à résoudre. Regardez attentivement la trace de la pile de l’exception ; elle vous indique exactement dans quelle ligne de votre code l’exception se produit. Vérifiez ce qui pourrait être nul dans cette ligne de code, et vérifiez si vous appelez une méthode sur quelque chose qui pourrait être nul. Ajoutez une validation (ou empêchez que l’élément concerné puisse être nul d’une autre manière).

Il suffit de vérifier que la valeur n’est pas nulle. Une condition telle que

if (valeur == null)

ne déclenchera jamais l’exception NullPointerException. Ce n’est que si vous essayez d’accéder à une référence nulle que vous obtiendrez l’exception. Il n’est donc pas question d’appeler des méthodes ou d’accéder à d’autres membres d’instance d’un objet.

Utilisez un if pour vérifier que la variable n’est pas nulle, puis utilisez le bloc else lorsqu’elle est nulle.

if (variable != null)
{
    // Code lorsque l'objet n'est pas nul
}
else
{
    // Code lorsque l'objet est nul
}

Le pointeur nul n’est déclenché que lorsque vous essayez d’utiliser la valeur null.

Par exemple,

variable.method();

Mais vous devez toujours éviter une situation où un pointeur nul pourrait se produire.

Comme indiqué par d’autres utilisateurs, si vous ne vous attendez pas à ce que la référence str soit nulle, corrigez le bogue qui fait que la référence est nulle en premier lieu. Cependant, si la référence peut être nulle, vous pouvez également procéder comme suit en utilisant l’opérateur ternaire (>= Java 5).

int len = (str == null) ? 0 : str.length;

Merci pour vos réponses, j’ai bien compris maintenat.