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

avec Java Discussion :

Redéclenchement d’une exception et choix du gestionnaire


Sujet :

avec Java

  1. #1
    Membre régulier
    Profil pro
    informatique
    Inscrit en
    Novembre 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : informatique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 167
    Points : 88
    Points
    88
    Par défaut Redéclenchement d’une exception et choix du gestionnaire
    bonsoir a tous , j'ai une question consernant les exception, je suis tombé sur un exercice et voici ce que je ne comprend pas, d'abord voici le 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
      class Erreur extends Exception {}
      class Erreur1 extends Erreur {}
      class Erreur2 extends Erreur {}
     class A
    { public A(int n) throws Erreur
    { try
    { if (n==1) throw new Erreur1() ;
    if (n==2) throw new Erreur2() ;
    if (n==3) throw new Erreur() ;
    }
    catch (Erreur1 e)
    { System.out.println ("** Exception Erreur1 dans constructeur A") ;
    }
    catch (Erreur e)
    { System.out.println ("** Exception Erreur dans constructeur A") ;
    throw (e) ;
    }
    }
    }
    public class Test
    { public static void main (String args[])
    { int n ;
    for (n=1 ; n<=3 ; n++)
    { try
    { A a = new A(n) ;
    }
    catch (Erreur1 e)
    { System.out.println ("*** Exception Erreur1 dans main") ;
    }
    catch (Erreur2 e)
    { System.out.println ("*** Exception Erreur2 dans main") ;
    }
    catch (Erreur e)
    { System.out.println ("*** Exception Erreur dans main") ;
    }
    System.out.println ("--------------") ;
    }
    System.out.println ("fin main") ;
    }
    }

    a quoi sert cette instruction , j'ai l'habitude de voir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    throw new Nomexception() ;
    serte j'ai executé le code , mais je ne sais pas reélement ce qu'elle signifie.
    donc si quelqu'un a une idée

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Tu relances l'exception que tu viens de catcher dans le cath(Erreur e).
    Les parenthèses ne sont pas nécessaires.

  3. #3
    Membre régulier
    Profil pro
    informatique
    Inscrit en
    Novembre 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : informatique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 167
    Points : 88
    Points
    88
    Par défaut
    Tu relances l'exception que tu viens de catcher dans le cath(Erreur e).
    y'a t'il un intérêt a cela?
    je veux dire par là, d’après l’exécution du programme , je reviens au main()

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Il y a un intérêt dans certains cas.
    L'intérêt du catch est d'effectuer un traitement suite a une exception.
    Dans certain cas tu aura besoin de traiter une exception dans ta fonction mais également d'informer le programme appelant de l'exception.


    1 - Tu catche dans la fonction pour effectuer un traitement spécifique à ta classe par exemple

    2 - Tu relances

    3 - Le programme appelant catch à son tour, pour faire tout autre chose si besoin.


    Ex vite fait : La classe voiture sait quoi faire en cas de panne d'essence, mais ne sait pas comment doit réagir le conducteur par exemple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class Voiture {
     
        public void rouler() {
            try {
                  // faire rouler la voiture
            } catch(PlusEssenceException e) {
                  arrêterMoteur();
                  throw e; // Relancer pour informer ce qui fait rouler la voiture
            }
        }
    }
    Dans le main : Le programme sait ce que doit faire le conducteur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public static void main(String[] args) {
         try {
             while(peuImporte) {
     
                 voiture.rouler();
               }
         } catch(PlusEssenceException e)  {
               conducteur.raler();
               conducteur.appelerAmis();
         }
    }

  5. #5
    Membre régulier
    Profil pro
    informatique
    Inscrit en
    Novembre 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : informatique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 167
    Points : 88
    Points
    88
    Par défaut
    merci a vous , c'est très clair .

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

Discussions similaires

  1. Cheminement des exceptions et choix du gestionnaire
    Par sheridan08 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 27/08/2012, 11h21
  2. Réponses: 1
    Dernier message: 16/09/2007, 17h28
  3. Réponses: 6
    Dernier message: 04/02/2007, 16h33
  4. gestionnaire d'Exception dans DLL
    Par pirbd dans le forum Langage
    Réponses: 2
    Dernier message: 03/03/2005, 18h58
  5. Évolution d’une application existante. Quel choix ?
    Par BBerni dans le forum Décisions SGBD
    Réponses: 9
    Dernier message: 10/05/2004, 10h59

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