Maison  >  Article  >  Java  >  Dans quels scénarios NullPointerException se produit-il en Java ?

Dans quels scénarios NullPointerException se produit-il en Java ?

WBOY
WBOYoriginal
2023-06-25 08:55:551614parcourir

Java est un langage de programmation largement utilisé, et NullPointerException est l'une de ses exceptions. Elle indique qu'il existe une référence de pointeur nul dans le code. Lorsqu'il y a un appel de méthode sur un objet nul ou un accès à une propriété d'un objet nul dans le code, une exception NullPointerException est levée. Dans cet article, nous explorerons les scénarios dans lesquels NullPointerException se produit.

1. Effectuez un appel de méthode lorsque l'objet est nul

Lorsqu'un objet est nul, si une méthode est appelée dessus, une NullPointerException sera levée. Par exemple, l'extrait de code suivant :

String str = null;
System.out.println(str.length());

Puisque str est null, lorsque l'instruction str.length() est exécutée, une NullPointerException sera levée. Afin d'éviter cette situation, nous devons juger l'objet avant d'appeler la méthode, comme indiqué ci-dessous :

String str = null;
if(str != null){
    System.out.println(str.length());
}

2. Effectuez des opérations sur un tableau lorsque le tableau est nul

Lorsqu'un tableau est nul, si vous effectuez des opérations sur un tableau dessus. (Comme l'accès aux éléments du tableau, l'évaluation de la longueur du tableau, etc.), NullPointerException sera également levée. Par exemple, l'extrait de code suivant :

int[] arr = null;
System.out.println(arr.length);

Puisque arr est nul, une NullPointerException sera levée lorsque l'instruction arr.length est exécutée. Afin d'éviter cette situation, nous devons juger le tableau avant d'accéder aux éléments du tableau, comme indiqué ci-dessous :

int[] arr = null;
if(arr != null){
    System.out.println(arr.length);
}

3. Une exception de pointeur nul se produit dans try-catch

Dans le bloc try-catch, si un pointeur nul se produit. se produit une exception, si l'objet pointeur nul est utilisé directement sans traitement dans le bloc catch, une exception NullPointerException sera également levée. Par exemple, l'extrait de code suivant :

try {
    String str = null;
    System.out.println(str.length());
} catch (Exception e) {
    String errorMsg = e.getMessage();
    System.out.println(errorMsg.length());
}

Puisqu'une exception de pointeur nul se produit dans le bloc try, lorsque l'instruction System.out.println(errorMsg.length()) dans le bloc catch est exécutée, une exception NullPointerException sera levée . Nous pouvons juger du message d'erreur dans le bloc catch, comme indiqué ci-dessous :

try {
    String str = null;
    System.out.println(str.length());
} catch (Exception e) {
    String errorMsg = e.getMessage();
    if(errorMsg != null){
        System.out.println(errorMsg.length());
    }
}

4. Utilisation d'objets non initialisés

Si un objet non initialisé est opéré, une NullPointerException sera également levée. Par exemple, l'extrait de code suivant :

String str;
System.out.println(str.length());

Comme str n'a pas été initialisé, lorsque l'instruction str.length() est exécutée, une NullPointerException sera également levée. Afin d'éviter cette situation, nous devons initialiser l'objet avant de l'utiliser, comme indiqué ci-dessous :

String str = "";
System.out.println(str.length());

Résumé :

Pour les exceptions NullPointerException, nous devons prêter attention aux problèmes dans les scénarios ci-dessus et les gérer en conséquence pour éviter Une référence de pointeur nul apparaît dans le code. Dans le même temps, nous pouvons également utiliser des classes d'outils (telles que la classe StringUtils dans la bibliothèque apache-commons-lang3) pour éviter l'apparition d'exceptions de pointeur nul.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn