Signification d'une exception

Résolu
cs_redbar Messages postés 112 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 26 mai 2014 - 30 nov. 2011 à 11:51
cs_redbar Messages postés 112 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 26 mai 2014 - 30 nov. 2011 à 16:34
Bonjour
JE voudrais savoir que signifie cette exception:

Exception occurred during event dispatching:
java.lang.ArrayIndexOutOfBoundsException: -1
at mti.ModelTableau.getValueAt(ModelTableau.java:47)
at javax.swing.JTable.getValueAt(Unknown Source)
at mti.Depense$5.valueChanged(Depense.java:363)
at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
at javax.swing.DefaultListSelectionModel.changeSelection(Unknown Source)
at javax.swing.DefaultListSelectionModel.changeSelection(Unknown Source)
at javax.swing.DefaultListSelectionModel.removeSelectionIntervalImpl(Unknown Source)
at javax.swing.DefaultListSelectionModel.clearSelection(Unknown Source)
at javax.swing.JTable.clearSelection(Unknown Source)
at javax.swing.JTable.clearSelectionAndLeadAnchor(Unknown Source)
at javax.swing.JTable.tableChanged(Unknown Source)
at javax.swing.table.AbstractTableModel.fireTableChanged(Unknown Source)
at javax.swing.table.AbstractTableModel.fireTableDataChanged(Unknown Source)
at mti.ModelTableau.addRow(ModelTableau.java:97)
at mti.Depense$2.actionPerformed(Depense.java:239)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.Dialog$1.run(Unknown Source)
at java.awt.Dialog$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Unknown Source)
at java.awt.Component.show(Unknown Source)
at java.awt.Component.setVisible(Unknown Source)
at java.awt.Window.setVisible(Unknown Source)
at java.awt.Dialog.setVisible(Unknown Source)
at mti.Depense.(Depense.java:64)
at mti.MenuPrincipal$20.actionPerformed(MenuPrincipal.java:462)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)


elle se produit tout le temps quand je travaille avec les Jtables
Merci.

8 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
30 nov. 2011 à 14:27
Aucune, tu peux tout gérer comme ca mais ton code sera pourri. Le temps d'exécution sera un peu plus long, c'est tout.

Si c'est un truc que tu dois rendre, tu devrais t'arranger pour le modifier.
3
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
30 nov. 2011 à 14:31
En gros, toutes les exceptions issues de la classe RuntimeException sont des exceptions causée par une erreur de développement. Tu gères donc les bornes du tableau en catchant les erreur de développement, ce qui n'est pas très heureux.

Surtout, qu'il est vraiment très simple d'itérer sur les éléments d'un tableau :

if(tableau.length()>0){
for(int i=0; i<tableau.length; i++){
System.out.println(tableau[i]);
}
}


Si tu n'as pas fait d'erreur de développement en amont, cette méthode ne lèvera jamais d'indexOutOfBoundException
3
elgenius Messages postés 34 Date d'inscription jeudi 27 octobre 2011 Statut Membre Dernière intervention 25 novembre 2016
30 nov. 2011 à 13:05
Salut,
C prcq tu essaye d'atteindre une index en dehors de ton JTable, surement que tu le parcours avec une boucle, dans ce cas verifie bien la condition de sortie
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
30 nov. 2011 à 13:18
Bonjour,

Quand tu as une exception, tu peux aller jeter un oeil à la doc, tu as toujours la signification :
Thrown to indicate that an array has been accessed with an illegal index. The index is either negative or greater than or equal to the size of the array.


C'est ici : http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/ArrayIndexOutOfBoundsException.html
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_redbar Messages postés 112 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 26 mai 2014
30 nov. 2011 à 13:35
Merci les gars je comprends maintenant. Je contournais cette erreur en mettant le code qui générait cette erreur dans
 try{ }catch( ArrayIndexOutOfBoundsException e){ //Ici je ne mettais rien   }

Ainsi donc mon programme continuais son exécution sans problème.
Mais voudrais savoir si c'est la bonne manière de faire
ou il faut forcement passer par une boucle comme le dit geniuscs.
merci
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
30 nov. 2011 à 14:11
Non, ce n'est pas la bonne manière de faire, tu ne dois jamais catcher les ArrayIndexOutOfBoundsException, mais tu dois empêcher qu'elle soit levée. C'est le cas pour toutes les RuntimeException (NullPointerException et IndexOutOfBoundsException principalement)

DE toute manière, un try avec rien dans le catch, est toujours une mauvaise idée.


Tu ne dois récupérer dans ton tableau que des valeurs qui sonjt comrises entre 0 et length-1. Si c'est l'utilisateur qui entre les valeurs, teste si les valeurs qu'il enreent sont bien dans cet intervalle.
0
cs_redbar Messages postés 112 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 26 mai 2014
30 nov. 2011 à 14:20
Alors peux tu me dire les conséquence de ma manière de faire car je dois alors tout reprendre du moins là où j'ai catcher ce type d'exception.
0
cs_redbar Messages postés 112 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 26 mai 2014
30 nov. 2011 à 16:34
Ok, j'ai compris
Je vais donc reprendre le code. mais il faut dire que ça va pas etre du gateau. Mais je suis pas pour autant découragé car c'est un bon exercice pour moi.
merci Beaucoup
0
Rejoignez-nous