IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

NullPointerException Java Correction


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2008
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Septembre 2008
    Messages : 99
    Par défaut NullPointerException Java Correction
    Bonjour,

    je suis sur la qualimétrie, j'ai remarqué le fait d'utiliser cette exeception "NullPointerException "pouvait générer des problèmes.

    Je ne comprend pas pourquoi ?

    Par exemple dans cette ligne de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (value == null) throw new NullPointerException("La valeur à ajouter est nul.");
    Que peut il se passe ? La machine virtuelle peux planter ?

    Si je remplace NullPointerException par IllegalArgumentExeption , est ce que ce serai mieux ? On m'a dit de remplacer par IllegalArgumentExeption quelle différence vas t il se passer ?

    Merci d'avance , je sais je pose beaucoup trop de question

  2. #2
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    Hello,

    non, il n'y a pratiquement aucune différence entre ces deux exceptions. NPE est, traditionnellement, levée lorsque l'on tente d'utiliser un champ ou méthode d'une référence null. J'aurais donc tendance à conseiller d'utiliser IAE, mais bon, il y a très peu de différence...


  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2008
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Septembre 2008
    Messages : 99
    Par défaut NullPointerException again again
    J'utilise en fait un plugins sous eclipse "PMD" qui corrige mon code, et quand je lève l'exéception NullPointerException . il me mets


    Avoid throwing a NullPointerException - it's confusing because most people will assume that the
    virtual machine threw it. Consider using an IllegalArgumentException instead; this will be
    clearly seen as a programmer-initiated exception.

    Je vois toujours pas pourquoi il est préferable de lever IllegalArgumentException comme exeption au lieu de NullPointerException ?

    Merci

  4. #4
    Membre confirmé
    Avatar de benjamin_musique
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 54
    Billets dans le blog
    1
    Par défaut
    Salut,

    la réponse me semble limpide pour ma part :

    - une NPE est une erreur technique, qui est habituellement remontée lorsque le cas d'utilisation (ici: ajouter une valeur nulle) n'est pas géré. C'est une erreur purement technique

    - toi, tu veux gérer ce cas, c'est pourquoi on te conseille d'utiliser une IllegalArgumentException pour ton message d'erreur qui est déjà plus "fonctionnelle" (par opposition à technique)

    Concrètement, on est d'accord que ça revient au même, c'est juste une "best practice", tu en fais ce que tu veux.

  5. #5
    Membre expérimenté

    Inscrit en
    Octobre 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 133
    Par défaut
    prenons en exemple ton élément value, si tu fait ça alors que value est null :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( value.equals("") ) return;
    ton programme a l'exécution va lancer automatiquement une NPE pour avertir que tu ne peux pas appeler la méthode equals sur ton élément value.

    Le fait de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (value == null) throw new NullPointerException("La valeur à ajouter est nul.");
    Revient a la même exception qu'au dessus mais est gérée par toi mémé,
    le conseil de PMD ici est de différencier une exception que tu lances toi directement car l'argument est incorrect d'une exception lancable par la JVM directement,
    la finalité est la même (enfin, en fonction des catch de ton application) mais permettra en fait a quelqu'un voyant les logs de comprendre plus facilement le type de problème et surtout de comprendre que tu gères l'exception et que ce n'est pas la JVM qui a lance celle-ci

    En écrivant ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (value == null) throw new IllegalArgumentException("La valeur à ajouter est nul.");
    Si l'exception est lancée, le logs sera lisible comme étant un problème sur un argument de méthode (et non pas une exception non gérée par ton application)

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2008
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Septembre 2008
    Messages : 99
    Par défaut NullPointerException again again
    Merci j'ai compris

Discussions similaires

  1. java.lang.nullpointerexception Java Jdeveloper
    Par pipopacha dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 31/05/2013, 18h17
  2. [debutant] NullPointerException java
    Par flora806 dans le forum Langage
    Réponses: 48
    Dernier message: 12/11/2007, 13h34
  3. [GNU Emacs] un style de codage java correct
    Par zafo dans le forum Autres Logiciels
    Réponses: 0
    Dernier message: 23/10/2007, 15h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo