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] relancer les instruction du bloc try


Sujet :

Langage Java

  1. #1
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 55
    Points : 41
    Points
    41
    Par défaut [try-catch] relancer les instruction du bloc try
    bonjour,

    j'ai un bloc try-catch qui me permet de saisir des données entrés par l'utilisateur au clavier.
    Dans la gestion de mes erreurs, je souhairais pouvoir relancer la saisie des données (instruction contenu dans le bloc try).
    en rgos, ça donnerais un truc dans c style là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    try{
    //récupération des données saisie au clavier
    }catch (exception de mauvaise saisie){
    //affiche : vous n'avez pas saisie les bonnes données
    //relance le bloc Try
    }
    est ce possible? et si oui comment?
    j'ai bien effectué qq recherche sur le forum et sur google, mais je n'ai rien trouvé d'interressant. peut etre n'ai je pas utilisé les bons mots clef....

    merci de votre aide

  2. #2
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Oui c'est possible, tu peux faire voir ton code stp, merci...

  3. #3
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    Bonjour,

    Ce n'est sûrement pas la bonne solution.

    Par contre, tu peux faire une fonction saisir() qui te renvoie un booléen
    (vrai si la saisie est bonne).

    ainsi tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while (!saisir());
    Bon courage

  4. #4
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 55
    Points : 41
    Points
    41
    Par défaut
    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
     
    int nbT;
    double nbP;
    try {
           while (rs3.next()) {
                   System.out.println("Caractéristique : " + rs3.getString(1) + ", " + rs3.getString(2));
                    //creation des buffer de lecture des entrées de l'utilisateur
                    Reader reader = new InputStreamReader(System.in);
                    BufferedReader keyboard = new BufferedReader(reader);
     
                     //recuperation de la taille
                     System.out.println("taille de la fenetre par defaut (entier) : ");
                     String ligne = keyboard.readLine();
                     nbT = Integer.parseInt(ligne);
                     //recuperation du poids
                     System.out.println("poids de la fenetre par defaut (double) : ");
                     ligne = keyboard.readLine();
                    nbP = Double.parseDouble(ligne);
     
                    }
    }catch (IOException e){
    }catch (NumberFormatException e){
                     System.out.println("la valeur entrée n'est pas un correcte");
    }
    j'aimerais qu'il me relance le bloc try lors de l'exception "NumberFormatException e"

  5. #5
    Membre habitué Avatar de phoebe
    Inscrit en
    Août 2003
    Messages
    289
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 289
    Points : 143
    Points
    143
    Par défaut
    est-ce que ça marche ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    boolean saisieCorrecte = false;
    while(! saisieCorrecte){
      try{ 
        //récupération des données saisie au clavier 
      }catch (exception de mauvaise saisie){ 
        //affiche : vous n'avez pas saisie les bonnes données 
      }
      finally{
        saisieCorrecte = true;
      }
    }

  6. #6
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    re,

    ca ne marchera pas, la clause finally est exécutée même si il y à eu
    une exception.

  7. #7
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 55
    Points : 41
    Points
    41
    Par défaut
    par contre, si je change la valeur de saisieCorrecte à true à la fin de mon bloc try, ça peut marcher, non?

    mais s'il est possible de relancer le bloc try à partir de mon bloc catch, je prefererais utiliser cette méthode, à moins qu'elle ne soit déconseillé pour une raison particuliere.

  8. #8
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Je pense que c'est possible tu peux utiliser goto, mais c'est super-méga-hyper déconseillé, ça ne cadre pas avec la programmation tout objet de java !!!

    Il Faut faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    boolean saisieCorrecte = false;
     
    while(! saisieCorrecte) { 
      try { 
        //récupération des données saisie au clavier
        saisieCorrecte = true;
      }
      catch (exception de mauvaise saisie) { 
        //affiche : vous n'avez pas saisie les bonnes données 
        saisieCorrecte = false; 
      } 
    }

  9. #9
    Membre habitué Avatar de phoebe
    Inscrit en
    Août 2003
    Messages
    289
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 289
    Points : 143
    Points
    143
    Par défaut
    oui ça marcherait mais la méthode de yann me parait la meilleure, la plus simple et la plus propre

  10. #10
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Points : 1 937
    Points
    1 937
    Par défaut
    Citation Envoyé par nounou
    par contre, si je change la valeur de saisieCorrecte à true à la fin de mon bloc try, ça peut marcher, non?

    mais s'il est possible de relancer le bloc try à partir de mon bloc catch, je prefererais utiliser cette méthode, à moins qu'elle ne soit déconseillé pour une raison particuliere.
    Ce n'est pas possible ainsi, un bloc try ne peut pas fonctionner comme une boucle ce qu'il faut faire c'est:
    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
     
     
    boolean condition = false;
     
    while (! condition)
    {
      try
      {
        ...
        condition = true;
      }
      catch (NumberFormatException e)
      {
       // tu affiches ton message
      }
    }
    Voila,

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  11. #11
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 55
    Points : 41
    Points
    41
    Par défaut
    ok, je vous remercie pour votre aide

  12. #12
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    re, re


    Ma méthode est exactement la même que de faire une boucle while
    avec un booleen qui change selon qu'il y ait une exception ou pas.

    Par contre, l'utilisation de la fonction permet d'exécuter le bloc d'où on veut (enfin presque).

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 06/10/2010, 17h06
  2. Visibilité de mon tableau dans bloc try catch
    Par erox44 dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 18/05/2010, 15h13
  3. répétition d'un bloc try/catch
    Par hadler dans le forum Général Java
    Réponses: 4
    Dernier message: 03/12/2009, 15h09
  4. Le Bloc Try/Catch
    Par freestyle59 dans le forum Langage
    Réponses: 2
    Dernier message: 25/03/2009, 14h17
  5. Faire un return dans un bloc try catch
    Par alizee971 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 13/08/2008, 19h38

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