Actuellement en train de développer une petite applet contenant un
JTable qui va chercher son contenu dans une base de données, j'ai
rencontré quelque problème. Après avoir dérivé la classe
AbstractTableModel, j'essaye d'initialiser une instance d'une autre
classe dérivée elle de JTable. À la compilation, tout fonctionne à
merveille, mais lors de l'exécution, je reçois inlassablement l'erreur
suivante : "Exception in thread "main" java.lang.StackOverflowError"
Après quelque recherche sur les archives et différents forum, il
semblerait que cela provienne d'un obscur problème de taille de
tableau... J'ai placé plus ou moins habilement des println afin de
savoir à partir de quel moment cela bloquait, et il semblerait que cela
soit quand j'appelle setModel();
Et la classe qui contient le main est peut-être superflue à afficher
ici... Mais en tout cas, juste "test" apparaît, et lorsque je met
"table.setModel(model);" en commentaire, le programme s'exécute, mais le
tableau ne s'affiche logiquement pas ;)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
David Tran Quang Ty
Je me répond à moi-même, mais j'ai finalement opté pour une autre solution qui m'a sorti de ce pétrin... Mais je suis tombé sur un autre os. En fait, j'ai une erreur qui me semblait anodine, mais je n'arrive malheureusement pas à m'en dépêtrer.
L'erreur est la suivante : ListeTable.java:517: unreported exception java.lang.Exception; must be caught or declared to be thrown throw e; ^
Elle est apparue à la base sur un appel à une méthode qui nécessitait de gérer les exceptions, d'où le rajout de la séquence try.
Je joins ici une partie du code des deux fonctions incriminées, au cas ou ;) (Mais c'est assez indigeste ^^")
while(resultat.next()) { ajouterComposant(content, partie[0] = new JLabel(resultat.getString(2)), 4, 1); ajouterComposant(content, partie[1] = new JLabel(resultat.getString(3)), 4, 2); ajouterComposant(content, partie[2] = new JLabel(resultat.getString(4)), 4, 3); ajouterComposant(content, partie[3] = new JLabel(resultat.getString(5)), 4, 4); ajouterComposant(content, partie[4] = new JLabel(resultat.getString(6)), 4, 5); ajouterComposant(content, partie[5] = new JLabel(resultat.getString(7)), 4, 6); ajouterComposant(content, partie[6] = new JLabel(resultat.getString(8)), 4, 7); ajouterComposant(content, partie[7] = new JLabel(resultat.getString(11)), 4, 8); ajouterComposant(content, partie[8] = new JLabel(resultat.getString(9)), 4, 9); ajouterComposant(content, partie[9] = new JLabel(resultat.getString(10)), 4, 10); }
}
Merci d'avance aux éventuelles réponses, et merci à ceux qui avaient commencé à réfléchir sur mon précédent problème ^^"
Je me répond à moi-même, mais j'ai finalement opté pour une autre
solution qui m'a sorti de ce pétrin... Mais je suis tombé sur un autre os.
En fait, j'ai une erreur qui me semblait anodine, mais je n'arrive
malheureusement pas à m'en dépêtrer.
L'erreur est la suivante :
ListeTable.java:517: unreported exception java.lang.Exception; must be
caught or
declared to be thrown
throw e;
^
Elle est apparue à la base sur un appel à une méthode qui nécessitait de
gérer les exceptions, d'où le rajout de la séquence try.
Je joins ici une partie du code des deux fonctions incriminées, au cas ou ;)
(Mais c'est assez indigeste ^^")
Je me répond à moi-même, mais j'ai finalement opté pour une autre solution qui m'a sorti de ce pétrin... Mais je suis tombé sur un autre os. En fait, j'ai une erreur qui me semblait anodine, mais je n'arrive malheureusement pas à m'en dépêtrer.
L'erreur est la suivante : ListeTable.java:517: unreported exception java.lang.Exception; must be caught or declared to be thrown throw e; ^
Elle est apparue à la base sur un appel à une méthode qui nécessitait de gérer les exceptions, d'où le rajout de la séquence try.
Je joins ici une partie du code des deux fonctions incriminées, au cas ou ;) (Mais c'est assez indigeste ^^")
while(resultat.next()) { ajouterComposant(content, partie[0] = new JLabel(resultat.getString(2)), 4, 1); ajouterComposant(content, partie[1] = new JLabel(resultat.getString(3)), 4, 2); ajouterComposant(content, partie[2] = new JLabel(resultat.getString(4)), 4, 3); ajouterComposant(content, partie[3] = new JLabel(resultat.getString(5)), 4, 4); ajouterComposant(content, partie[4] = new JLabel(resultat.getString(6)), 4, 5); ajouterComposant(content, partie[5] = new JLabel(resultat.getString(7)), 4, 6); ajouterComposant(content, partie[6] = new JLabel(resultat.getString(8)), 4, 7); ajouterComposant(content, partie[7] = new JLabel(resultat.getString(11)), 4, 8); ajouterComposant(content, partie[8] = new JLabel(resultat.getString(9)), 4, 9); ajouterComposant(content, partie[9] = new JLabel(resultat.getString(10)), 4, 10); }
}
Merci d'avance aux éventuelles réponses, et merci à ceux qui avaient commencé à réfléchir sur mon précédent problème ^^"
Thomas Nguyen
On Sun, 30 Jan 2005 08:56:07 +0100, David Tran Quang Ty wrote:
Je me répond à moi-même, mais j'ai finalement opté pour une autre solution qui m'a sorti de ce pétrin... Mais je suis tombé sur un autre os. En fait, j'ai une erreur qui me semblait anodine, mais je n'arrive malheureusement pas à m'en dépêtrer.
L'erreur est la suivante : ListeTable.java:517: unreported exception java.lang.Exception; must be caught or declared to be thrown throw e; ^
Elle est apparue à la base sur un appel à une méthode qui nécessitait de gérer les exceptions, d'où le rajout de la séquence try.
J'ai isolé un bout de code, qui semble être à l'origine de ton problème. Je suis pas sûr que ta ligne 517 corresponde bien à ce bout de code, mais on va faire comme si.
list.addListSelectionListener(new ListSelectionListener() { public void valueChanged( ListSelectionEvent ee) { String str1 = (String)list.getSelectedValue(); StringTokenizer st = new StringTokenizer(str1); String str = st.nextToken();
int tmp = Integer.parseInt(str);
try { makeZone(tmp); } catch(Exception e) {
System.err.println("n*** Exception caught in makeTableJeu"); throw e;
Ta fonction makeZone() lance une exception, et tu mets bien cet appel dans un bloc try. Jusque là, tout va bien.
Le problème vient du fait que tu *relances* cette exception, alors que tu es dans la méthode valueChanged(). Cette méthode est définie dans l'interface ListSelectionListener, et tu ne peux pas ajouter de "throws Exception" à la signature de la méthode.
La seule solution est de ne pas relancer l'exception. Il faut que tu la gères entièrement dans le bloc catch, sans la relancer.
On Sun, 30 Jan 2005 08:56:07 +0100, David Tran Quang Ty wrote:
Je me répond à moi-même, mais j'ai finalement opté pour une autre
solution qui m'a sorti de ce pétrin... Mais je suis tombé sur un autre os.
En fait, j'ai une erreur qui me semblait anodine, mais je n'arrive
malheureusement pas à m'en dépêtrer.
L'erreur est la suivante :
ListeTable.java:517: unreported exception java.lang.Exception; must be
caught or
declared to be thrown
throw e;
^
Elle est apparue à la base sur un appel à une méthode qui nécessitait de
gérer les exceptions, d'où le rajout de la séquence try.
J'ai isolé un bout de code, qui semble être à l'origine de ton problème.
Je suis pas sûr que ta ligne 517 corresponde bien à ce bout de code,
mais on va faire comme si.
list.addListSelectionListener(new ListSelectionListener()
{
public void valueChanged( ListSelectionEvent ee)
{
String str1 = (String)list.getSelectedValue();
StringTokenizer st = new StringTokenizer(str1);
String str = st.nextToken();
int tmp = Integer.parseInt(str);
try {
makeZone(tmp);
}
catch(Exception e)
{
System.err.println("n*** Exception caught in makeTableJeu");
throw e;
Ta fonction makeZone() lance une exception, et tu mets bien cet appel dans
un bloc try. Jusque là, tout va bien.
Le problème vient du fait que tu *relances* cette exception, alors que tu
es dans la méthode valueChanged().
Cette méthode est définie dans l'interface ListSelectionListener, et tu
ne peux pas ajouter de "throws Exception" à la signature de la méthode.
La seule solution est de ne pas relancer l'exception. Il faut que tu la
gères entièrement dans le bloc catch, sans la relancer.
On Sun, 30 Jan 2005 08:56:07 +0100, David Tran Quang Ty wrote:
Je me répond à moi-même, mais j'ai finalement opté pour une autre solution qui m'a sorti de ce pétrin... Mais je suis tombé sur un autre os. En fait, j'ai une erreur qui me semblait anodine, mais je n'arrive malheureusement pas à m'en dépêtrer.
L'erreur est la suivante : ListeTable.java:517: unreported exception java.lang.Exception; must be caught or declared to be thrown throw e; ^
Elle est apparue à la base sur un appel à une méthode qui nécessitait de gérer les exceptions, d'où le rajout de la séquence try.
J'ai isolé un bout de code, qui semble être à l'origine de ton problème. Je suis pas sûr que ta ligne 517 corresponde bien à ce bout de code, mais on va faire comme si.
list.addListSelectionListener(new ListSelectionListener() { public void valueChanged( ListSelectionEvent ee) { String str1 = (String)list.getSelectedValue(); StringTokenizer st = new StringTokenizer(str1); String str = st.nextToken();
int tmp = Integer.parseInt(str);
try { makeZone(tmp); } catch(Exception e) {
System.err.println("n*** Exception caught in makeTableJeu"); throw e;
Ta fonction makeZone() lance une exception, et tu mets bien cet appel dans un bloc try. Jusque là, tout va bien.
Le problème vient du fait que tu *relances* cette exception, alors que tu es dans la méthode valueChanged(). Cette méthode est définie dans l'interface ListSelectionListener, et tu ne peux pas ajouter de "throws Exception" à la signature de la méthode.
La seule solution est de ne pas relancer l'exception. Il faut que tu la gères entièrement dans le bloc catch, sans la relancer.
David Tran Quang Ty
J'ai isolé un bout de code, qui semble être à l'origine de ton problème. Je suis pas sûr que ta ligne 517 corresponde bien à ce bout de code, mais on va faire comme si.
Oui, cela correspondait bien ^^ Et merci pour le conseil, c'était bien d'ou venait l'erreur ^^
J'ai isolé un bout de code, qui semble être à l'origine de ton problème.
Je suis pas sûr que ta ligne 517 corresponde bien à ce bout de code,
mais on va faire comme si.
Oui, cela correspondait bien ^^
Et merci pour le conseil, c'était bien d'ou venait l'erreur ^^
J'ai isolé un bout de code, qui semble être à l'origine de ton problème. Je suis pas sûr que ta ligne 517 corresponde bien à ce bout de code, mais on va faire comme si.
Oui, cela correspondait bien ^^ Et merci pour le conseil, c'était bien d'ou venait l'erreur ^^