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

Servlets/JSP Java Discussion :

try catch bizarre


Sujet :

Servlets/JSP Java

  1. #1
    Membre très actif
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Par défaut try catch bizarre
    Bonjour,

    Je souhaiterais faire une insertion dans une base de données, donc voici comment j'ai procédé :

    J'ai une page JSP sur laquelle je saisis mes données et ensuite j'appelle une servlet avec la méthode post

    Voila le code de la servlet méthode dopost:
    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
            try
            {
                Connection co = null;
                Class.forName("org.postgresql.Driver");
                co=DriverManager.getConnection("jdbc:postgresql://localhost/banquebase","postgres", "moi");
                Statement st;
                st = (Statement) co.createStatement();          
                st.execute("INSERT into compte  (num_cpt,nom,prenom,tel,bp,prof,adresse,solde)  VALUES('jfe','f','e','g','r','kl','vb','r')");
                st.close();
     
                getServletContext().getRequestDispatcher("/Fenregistrer_client.jsp").forward(request, response);
            }
            catch (SQLException ex) {
                Logger.getLogger(Servlet_enregistrer_client.class.getName()).log(Level.SEVERE, null, ex);
            }
            catch (ClassNotFoundException ex) {
                Logger.getLogger(Servlet_enregistrer_client.class.getName()).log(Level.SEVERE, null, ex);
            }
            catch (Exception ex) {
                Logger.getLogger(Servlet_enregistrer_client.class.getName()).log(Level.SEVERE, null, ex);
            }
    J'ai fais fis de la récupération en elle-même, pour voir l'insertion, mais en vain.

    J'ai fait le constat que si je mets la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getServletContext().getRequestDispatcher("/Fenregistrer_client.jsp").forward(request,  response);
    en dehors du catch, il arrive à faire le forward.
    Donc le bloc try ne marche pas, ni ne renvoie d'exception.

    Quelqu'un saurait-il m'expliquer d'où peut venir le problème ?

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    commence par desex.printStackTrace(). Ton logger envoie peut être ailleurs que là où tu pense à regarder. Ensuite, tu ne ferme pas ta connexion dans un bloc finally, c'est une erreur. Enfin, coté base de donnée, il manque le commit en fin d'opération.

  3. #3
    Membre chevronné Avatar de florentB
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Par défaut
    J'ai fait le constat que si je mets la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
         getServletContext().getRequestDispatcher("/Fenregistrer_client.jsp").forward(request,  response);
    en dehors du catch, il arrive à faire le forward.
    Donc le bloc try ne marche pas, ni ne renvoie d'exception.
    ton try - catch fonctionne correctement.
    Tu ne fais que logger l'erreur. Aucun autre traitement : levée d'une exception spécifique, traitement de l'erreur. Donc, une fois que l'exception est loggée, le traitemenent continue.

    Si tu avais fait quelquechose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    
    try {
       ...
    } catch (SQLException ex) {
       throw new SpecifiqueException(e); 
    } ...
    getServletContext().getRequestDispatcher("/Fenregistrer_client.jsp").forward(request,response);
    Après la levée d'erreur, le traitement se termine, donc pas de forward

  4. #4
    Membre très actif
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Par défaut
    Citation Envoyé par florentB Voir le message
    ton try - catch fonctionne correctement.
    Tu ne fais que logger l'erreur. Aucun autre traitement : levée d'une exception spécifique, traitement de l'erreur. Donc, une fois que l'exception est loggée, le traitemenent continue.

    Si tu avais fait quelquechose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    
    try {
       ...
    } catch (SQLException ex) {
       throw new SpecifiqueException(e); 
    } ...
    getServletContext().getRequestDispatcher("/Fenregistrer_client.jsp").forward(request,response);
    Après la levée d'erreur, le traitement se termine, donc pas de forward
    meme si je met le forward dans le catch il ne forwarde pas

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Parce que t'as une exception, tout simplement

  6. #6
    Membre chevronné Avatar de florentB
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Par défaut
    Salut je pense que je n'ai pas bien compris ce que tu veux au final.

    Schématiquement, voilà comment fonctionne un code :

    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
    private void testCall() throws SpecificException {
       try {
    
       } catch (SQLException e) {
          e.printStackTrace();
          throw new SpecificException(e); // on soulève une erreur, on arrête le traitement on retourne à la méthode appelante
       } catch (AnotherException e) {
         e.printStackTrace();
         logger.debug("erreur"); // Ici le traitement continue car on ne soulève pas d'exception donc on fera le forward.
       }
     getServletContext().getRequestDispatcher("/Fenregistrer_client.jsp").forward(request,response);
    }
    private void test () {
      try {
         testCall();
      } catch (SpecificException e) {
        //ici on récupéère l'éventuelle exception levée par testCall afin de la traiter
      }
    }
    le printStackStrace permettra de voir l'erreur dans ta console Eclipse si tu as un pb et que ton logger est mal défini.

  7. #7
    Membre très actif
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Par défaut
    Citation Envoyé par florentB Voir le message
    Salut je pense que je n'ai pas bien compris ce que tu veux au final.

    Schématiquement, voilà comment fonctionne un code :

    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
    private void testCall() throws SpecificException {
       try {
    
       } catch (SQLException e) {
          e.printStackTrace();
          throw new SpecificException(e); // on soulève une erreur, on arrête le traitement on retourne à la méthode appelante
       } catch (AnotherException e) {
         e.printStackTrace();
         logger.debug("erreur"); // Ici le traitement continue car on ne soulève pas d'exception donc on fera le forward.
       }
     getServletContext().getRequestDispatcher("/Fenregistrer_client.jsp").forward(request,response);
    }
    private void test () {
      try {
         testCall();
      } catch (SpecificException e) {
        //ici on récupéère l'éventuelle exception levée par testCall afin de la traiter
      }
    }
    le printStackStrace permettra de voir l'erreur dans ta console Eclipse si tu as un pb et que ton logger est mal défini.
    meme avec le printStackStrace il ne m'affiche pas l'erreur, je travaille sous netbeans

Discussions similaires

  1. Builder n'accepte pas try/catch/__finally
    Par Rodrigue dans le forum C++Builder
    Réponses: 3
    Dernier message: 18/04/2005, 13h15
  2. __try __finally et try catch
    Par buzzz dans le forum C++
    Réponses: 6
    Dernier message: 19/02/2005, 15h31
  3. [debutant sous eclipse] surround with try catch
    Par Alwin dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 26/06/2004, 20h03
  4. [try-catch] relancer les instruction du bloc try
    Par nounou dans le forum Langage
    Réponses: 11
    Dernier message: 12/05/2004, 11h23
  5. Exception & Try..catch
    Par PurL dans le forum C++Builder
    Réponses: 2
    Dernier message: 11/12/2002, 15h35

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