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

Langage Java Discussion :

ArrayIndexOutOfBoundsException : null


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de Ceddoc
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2009
    Messages : 493
    Par défaut ArrayIndexOutOfBoundsException : null
    Bonjour à tous je suis chargé de débuggé une application existante à partir des stacks présentes dans les logs.

    Mon logger me présente une ligne de ce type :
    + Exception = java.lang.ArrayIndexOutOfBoundsException : null
    Puis la stack de l'exception qui présente une ligne où en effet il y a un tableau de manipulé.

    Voilà la ligne de log de l'exception dans mon logger :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    res.append("+ Exception = ").append(t.toString()).append(" : ").append(t.getMessage());
    t étant le throwable (l'exception)

    Mais du coup ce qui me parait bizarre c'est d'avoir le message à null alors que dans les autres cas de ArrayIndexOutOfBound exception j'ai quelque chose de ce genre là :
    + Exception = java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 11 : Array index out of range: 11
    J'ai tenté de reproduire en mettant l'index à null, le tableau à null etc... mais rien n'y fait je n'ai que des NPE etc... mais jamais de ArrayIndexOutOfBoundsException avec le message à null.

    ça parle à quelqu'un cette erreur?

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Il peut s'agir d'une ArrayIndexOutOfBoundsException généré par du code et non pas par la JVM. Par exemple un truc comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (/* une condition */) {
        throw new ArrayIndexOutOfBoundsException();
    }
    Dans ce cas le message est null.


    Dans de nombreux cas les exceptions ne comportent pas de message...


    a++

  3. #3
    Membre chevronné Avatar de Ceddoc
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2009
    Messages : 493
    Par défaut
    J'aurais du préciser que je n'ai trouvé aucune trace de gestion d'exception de façon "manuelle" dans le morceau de code concerné.

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Quel est ce "morceau de code" ? Et le stacktrace correspondant ?


    a++

  5. #5
    Membre chevronné Avatar de Ceddoc
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2009
    Messages : 493
    Par défaut
    stack :
    + Exception = java.lang.ArrayIndexOutOfBoundsException : null
    java.lang.ArrayIndexOutOfBoundsException
    at monpackage.MaClasse.Mamethode(MaClasse.java:280)
    et la ligne 280 de MaClasse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String label = tab[recordsetperso.getColIndexByName(tableauCustom.getColumn(j).getName())];
    Pour l'erreur ou le ArrayIndexOutOfBoundsException sort sur un index donné, c'est du fonctionnel, je suis dessus aucun soucis mais j'arrive pas à comprendre dans quel cas il sort un message nul.

    J'ai regardé dans getColIndexByName c'est une boucle sur un tableau qui renvoi l'index de la colonne dont le nom est donné des qu'il l'a trouvé, pas de gestion d'exception.

    Je la met au cas ou :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public int getColIndexByName (String name) {
    		int i = 0;
    		while ((i < fieldNbColumn) && (!columnName[i].equalsIgnoreCase(name)))
    			i++;
     
    		return i;
    	}
    Je sais qu'elle est pas terrible j'ai prévue de la corriger.


    Le getColumn c'est juste un accesseur qui renvoi untab[indexdonne] en gros.

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    C'est plus propre d'écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while ((i < columnName.length) && (!columnName[i].equalsIgnoreCase(name))
    Peut-on aussi voir la boucle ou la méthode qui contient
    String label = tab[recordsetperso.getColIndexByName(tableauCustom.getColumn(j).getName())];
    A+.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. PROBLEME AVEC LES REQUETES IS NULL / NOT EXISTS
    Par sylvaine dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/06/2004, 13h26
  2. Comment rediriger la sortie vers /dev/null
    Par dclink dans le forum C
    Réponses: 4
    Dernier message: 24/06/2003, 18h23
  3. Tester si un champ est NULL
    Par titititi007 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/06/2003, 10h17
  4. [VB6] [BDD] Recordset et champ égal à Null
    Par Gr|ppen dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 07/03/2003, 10h00
  5. "ALTERER" une col. NULL en NOT NULL - Int
    Par Gandalf24 dans le forum SQL
    Réponses: 2
    Dernier message: 28/12/2002, 00h07

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