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 :

Try/ catch dans une fonction ActionPerformed


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 16
    Points : 10
    Points
    10
    Par défaut Try/ catch dans une fonction ActionPerformed
    Bonjour à tous,

    Jai un petit probleme dans mon code java.
    J'ai créé une classe "but_rechercher" qui contient l'action de mon bouton rechercher.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import vue.*;
    import java.sql.*;
     
    import modele.ASSO;
     
    public class   but_rechercher implements   ActionListener
        {
     
            public  void    actionPerformed(ActionEvent e)  
            {
     
    			{ 
    				String pilote = 
    			    	  "com.mysql.jdbc.Driver"; 
    			    	  String url = 
    			    	  "jdbc:mysql://localhost/assobase"; 
    			    	  String user = 
    			    	  "root"; 
    			    	  String password = ""; 
    			    	  try { 
    			    	  Class.forName(pilote);
    			    	  Connection con = DriverManager.getConnection( url, user, password);
    			    	  Statement instruction = con.createStatement();
    			    	  ResultSet resultat = instruction.executeQuery("SELECT * FROM asso"); 
    			    	  while(resultat.next()){ 
    			    	  System.out.println("Num de l'asso: "+resultat.getString("num_asso")); }
    			    	  System.out.println("coup de chance"); } 
    			    	  catch (SQLException ex) { 
    			    	  System.out.println("toujours pas" ); 
     
     
    			    	  }
     
            	}
     
     
     
            }
        } //class
    Le probleme est que eclipse n'accepte pas mon try catch.
    Donc j'ajoute à la fonction "throws ClassNotFoundException".
    Mais cela ne fonctionne pas non plus ...

    Merci d'avance pour votre aide

  2. #2
    Membre extrêmement actif Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 814
    Points
    814
    Par défaut
    Citation Envoyé par thomas2929 Voir le message
    Bonjour à tous,

    Jai un petit probleme dans mon code java.
    J'ai créé une classe "but_rechercher" qui contient l'action de mon bouton rechercher.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import vue.*;
    import java.sql.*;
    
    import modele.ASSO;
    
    public class   but_rechercher implements   ActionListener
        {
      
            public  void    actionPerformed(ActionEvent e)  
            {
            
    			{ 
    				String pilote = 
    			    	  "com.mysql.jdbc.Driver"; 
    			    	  String url = 
    			    	  "jdbc:mysql://localhost/assobase"; 
    			    	  String user = 
    			    	  "root"; 
    			    	  String password = ""; 
    			    	  try { 
    			    	  Class.forName(pilote);
    			    	  Connection con = DriverManager.getConnection( url, user, password);
    			    	  Statement instruction = con.createStatement();
    			    	  ResultSet resultat = instruction.executeQuery("SELECT * FROM asso"); 
    			    	  while(resultat.next()){ 
    			    	  System.out.println("Num de l'asso: "+resultat.getString("num_asso")); }
    			    	  System.out.println("coup de chance"); } 
    			    	  catch (SQLException ex) { 
    			    	  System.out.println("toujours pas" ); 
    			    	  
    			    	  
    			    	  }
    
            	}
           
        
        
            }
        } //class
    Le probleme est que eclipse n'accepte pas mon try catch.
    Donc j'ajoute à la fonction "throws ClassNotFoundException".
    Mais cela ne fonctionne pas non plus ...

    Merci d'avance pour votre aide
    c'est normal cette acolade en rouge ??
    Heureux soient les fêlés, car ils laisseront passer la lumière.

    Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.

    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Non, en effet je l'ai retiré.
    Mais toujours le meme probleme


  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Fais voir ton code lorsque tu mets un try/catch.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Membre extrêmement actif Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 814
    Points
    814
    Par défaut
    oui et qu'entends tu par "Eclipse n accepte pas..." montre nous l erreur aussi
    Heureux soient les fêlés, car ils laisseront passer la lumière.

    Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.

    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    l'erreur (si je ne met pas throws ClassNotFoundException):
    --> Unhandled exception type ClassNotFoundException

    l'erreur (si j'ajoute throws ... à la fonction actionPerformed) :
    --> Exception ClassNotFoundException is not compatible with throws clause in ActionListener.actionPerformed(ActionEvent)


    Le code du try catch :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    try { 
    Class.forName(pilote);
    Connection con = DriverManager.getConnection( url, user, password);
    Statement instruction = con.createStatement();
    ResultSet resultat = instruction.executeQuery("SELECT * FROM asso"); 
    while(resultat.next())
    { System.out.println("Num de l'asso: "+resultat.getString("num_asso")); }
    System.out.println("coup de chance"); } 
    catch (SQLException ex) { System.out.println("toujours pas" ); 
     
    			    	  }
    A mon avis ya un truc capital que j'ai pas pigé en java
    merci de votre aide

  7. #7
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Tu n'as pas catché la ClassNotFoundException levée par Class.forName(pilote), ajoute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

    Citation Envoyé par thomas2929 Voir le message
    A mon avis ya un truc capital que j'ai pas pigé en java
    dans une méthode que l'on hérite ou que l'on implémente d'une interface, on ne peut pas ajouté de throws uneException. On peut seulement spécifier une exception de plus bas niveau. On ne peut pas ajouter de type d'exception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    interface A {
        void toto() throws IOException;
    }
     
    class B implements A {    
        //public void toto() throws SQLException {} // correcte
        //public void toto() {}  // correcte
        //public void toto() throws FileNotFoundException, EOFException {} // correcte car elles héritent de IOException
     
        public void toto() throws ClassNotFoundException{} // incorrecte
    }

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 64
    Points : 59
    Points
    59
    Par défaut
    Oui il me semble aussi qu'il manque des import (sous eclipse, logiciel gratuit ça se fait tout seul), mais un conseil que je peux te donner c'est de respecter la syntaxe java en ce qui concerne les déclaration de classes etc, tu verra le code se lit plus facilement si les classe commencent avec des majuscules et les méthode non genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class ButRecercher {
     
    }
    Mais après tu fais comme tu veux c'est juste que je trouve plus simple de trouver ses propres erreurs quand c'est fait ainsi (pour le moment tu n'a qu'une classe mais le jour ou tu en auras une dizaine à regarder ça sera bien moins évident....

    Bien cordialement

  9. #9
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Morph41 :
    désolé je suis vraiment une buse.
    Ou faut-il ajouter ce catch ?


    Et pour mon info personnel :
    pourquoi un "try catch sqlexception " ne suffit pas dans mon cas ?
    A quoi sert le "try/catch ClassNotFoundException e" ?


    Merci à tous pour votre aide
    Vous êtes pharaoniques (je sais , j'en fais trop ...)

  10. #10
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Comme je l'ai dit, c'est Class.forName(pilote) qui peut te renvoyer une exception, donc tu dois la catcher.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    try { 
    Class.forName(pilote);
    Connection con = DriverManager.getConnection( url, user, password);
    Statement instruction = con.createStatement();
    ResultSet resultat = instruction.executeQuery("SELECT * FROM asso"); 
    while(resultat.next())
    { System.out.println("Num de l'asso: "+resultat.getString("num_asso")); }
    System.out.println("coup de chance"); } 
    catch (SQLException ex) { System.out.println("toujours pas" );}
    catch(ClassNotFoundException e) {System.out.println("classe pilote non trouvée" );}

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 64
    Points : 59
    Points
    59
    Par défaut
    A chaque fois qu'une implémentation génère une exception il te faut la try/catcher tu n'y peux rien c'est comme ça mais c'est pas toujours évident de le savoir.... c'est en codant encore et encore que tu apprends quand il faut mettre ou pas une exception

  12. #12
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    OK merci à TOUS.

    Le probleme est résolu.

    A bientôt !

  13. #13
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Citation Envoyé par fluff Voir le message
    A chaque fois qu'une implémentation génère une exception il te faut la try/catcher tu n'y peux rien c'est comme ça mais c'est pas toujours évident de le savoir.... c'est en codant encore et encore que tu apprends quand il faut mettre ou pas une exception
    Ce n'est pas vrai, tu peux aussi faire un throws, si la classe ou l'interface déclarant la méthode déclarait le throws du type d'exception que tu veux lancer. (voir mon post précédent)

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 64
    Points : 59
    Points
    59
    Par défaut
    Oui c'est ce que je dis sauf que lorsque tu mets un throws, tu récupères l'exception avant.... donc pas besoin de try/catch ou alors j'ai vraiment rien compris....

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

Discussions similaires

  1. [PostgreSQL] try catch dans une transaction
    Par Cyanatide dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 18/10/2011, 11h56
  2. Utilisation de try catch dans une procédure de backup de database
    Par megtrinity dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 05/11/2009, 14h53
  3. Try, catch dans une fonction
    Par mactwist69 dans le forum Windows Forms
    Réponses: 10
    Dernier message: 10/07/2008, 16h39
  4. Try catch dans une dll - possible ?
    Par Pendary dans le forum C++Builder
    Réponses: 1
    Dernier message: 02/03/2007, 16h48

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