[JAVA] nullPointerException
apprentiSorcier1
Messages postés
2
Statut
Membre
-
apprentiSorcier1 Messages postés 2 Statut Membre -
apprentiSorcier1 Messages postés 2 Statut Membre -
Bonjour,
j'essaie de tester une classe qui gère une liste de maillons chaînés symétriques qui contiennent un objet de type générique (avec l'aide d'un élément courant) et j'obtiens toujours une exception due à un pointeur vide. En fait, cette exception est censée être bloquée par le fait que l'élément courant n'existe pas. Toutefois, l'exception est levée à la ligne du "return m.info();"
Descriptif des méthodes utilisées à l'intérieur de la méthode problème:
new MaillonSymetrique( MaillonSymetrique<T> precedent, element, MaillonSymetrique<T> suivant ) ---> Crée un objet de type générique qui pointe vers les objets précédent et suivant.
courantEstDefini() ---> Retourne TRUE si l'élément courant a été défini
info() ---> Retourne l'objet element du MaillonSymetrique<T> en question
Voici donc la méthode problème,
/**
* Retourne la valeur de l'élément courant s'il est défini.
* @return la valeur de l'élément courant.
* @throws NoSuchElementException si l'élément courant n'est pas défini.
*/
public T valeurElementCourant () throws NoSuchElementException{
MaillonSymetrique<T> m = new MaillonSymetrique( null, null, null );
if( !courantEstDefini() )
{
throw new NoSuchElementException( messageErreur );
}
else
{
m = elementCourant;
}
return m.info();
}
j'essaie de tester une classe qui gère une liste de maillons chaînés symétriques qui contiennent un objet de type générique (avec l'aide d'un élément courant) et j'obtiens toujours une exception due à un pointeur vide. En fait, cette exception est censée être bloquée par le fait que l'élément courant n'existe pas. Toutefois, l'exception est levée à la ligne du "return m.info();"
Descriptif des méthodes utilisées à l'intérieur de la méthode problème:
new MaillonSymetrique( MaillonSymetrique<T> precedent, element, MaillonSymetrique<T> suivant ) ---> Crée un objet de type générique qui pointe vers les objets précédent et suivant.
courantEstDefini() ---> Retourne TRUE si l'élément courant a été défini
info() ---> Retourne l'objet element du MaillonSymetrique<T> en question
Voici donc la méthode problème,
/**
* Retourne la valeur de l'élément courant s'il est défini.
* @return la valeur de l'élément courant.
* @throws NoSuchElementException si l'élément courant n'est pas défini.
*/
public T valeurElementCourant () throws NoSuchElementException{
MaillonSymetrique<T> m = new MaillonSymetrique( null, null, null );
if( !courantEstDefini() )
{
throw new NoSuchElementException( messageErreur );
}
else
{
m = elementCourant;
}
return m.info();
}
2 réponses
-
Salut,
Tu peux, dans un premier temps, mettre ton message d'erreur dans m et agir en fonction de ce qui est retourné.
Cordialement,
Dan
-
Je ne vois qu'une seule raison pour que ça plante ici, c'est que elementCourant vaut null, ce qui signifierai alors que courantEstDefini() ne fonctionne pas correctement, puisqu'elle aurait du renvoyer false lors de son appel.
Remarque : l'initialisation de m avec ton new(null,null,null) est totalement abject, cela
créé un objet en mémoire qui ne sera jamais utilisé !
public boolean courantEstDefini() { return elementCourant!=null; } public T valeurElementCourant() throws NoSuchElementException { if (courantEstDefini()) return elementCourant.info(); else throw new NoSuchElementException(messageErreur); }