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 :

Cheminement des exceptions 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 Cheminement des exceptions et choix du gestionnaire
    Bonjour a tous, j'ai une question consernant un exercice(dont je n'ai pas compris le corrigé) voici d'abord 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
     
    class Erreur extends Exception
    { public int num ;
    }
    class Erreur_d extends Erreur
    { public int code ;
    }
    class A
    { public A(int n) throws Erreur_d
    { if (n==1) { Erreur_d e = new Erreur_d() ; e.num = 999 ; e.code = 12 ;
    throw e ;
    }
    }
    }
    public class Test
    {
    public static void main (String args[])
    { try
    { A a = new A(1) ;
    System.out.println ("apres creation a(1)") ;
    }
    catch (Erreur e)
    { System.out.println ("** exception Erreur " + e.num) ;
    }
    System.out.println ("suite main") ;
    try
    { A b = new A(1) ;
    System.out.println ("apres creation b(1)") ;
    }
     
    catch (Erreur_d e)
    { System.out.println ("** exception Erreur_d " + e.num + " " + e.code) ;
    }
    catch (Erreur e)
    { System.out.println ("** exception Erreur " + e.num) ;
    }
     
     
    }
    }
    la question est la suivante :

    Que se passe-t-il si l’on inverse l’ordre des deux gestionnaires dans le second bloc try ?

    d'apres le corrigé:
    Si l’on inverse l’ordre des deux gestionnaires dans le second bloc try, on obtient une erreur de compilation car le second n’a aucune chance d’être sélectionné.

    ma question:

    pourquoi obtient-on une erreur alors que A déclenche une exception de type
    Erreur_d. Celle-ci est traitée par l’unique gestionnaire relatif au type Erreur, lequel convient effectivement puisque Erreur_d dérive de Erreur.
    y'a t-il un ordre a respecter lorsque on écrit les différents gestionnaires d'erreurs c'est à dire: commencer du plus spécifique et terminer par le plus général?

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 13
    Points : 25
    Points
    25
    Par défaut
    Bonjour,

    Il s'agit d'une petite question de logique

    Il ne faut pas oublier que Erreur_d hérite de Erreur !

    Les blocs catch sont lus dans l'ordre pour faire passer une Exception, donc dans la logique si une Erreur_d (et qui est donc une Erreur) se lève, alors on passera forcement dans le premier bloc catch si celui-ci est :

    Il faut retenir que pour construire des blocs try/catch, il faut que les catch soient mis dans l'ordre du plus spécifique au plus général de façon à ce que tous les blocs catch soient atteignables

    Voila, j'espere t'éclaircir les choses.

    Cordialement,
    Azramis

  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
    c'est très clair Azramis, merci beaucoup

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

Discussions similaires

  1. Redéclenchement d’une exception et choix du gestionnaire
    Par sheridan08 dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 27/08/2012, 10h03
  2. specifier les chemins des .class
    Par draken dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 29/07/2003, 09h35
  3. [XMLRAD] gestion des exceptions
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 28/01/2003, 17h48
  4. [FORMS] Chemin des icones (intégré FAQ 150 QR)
    Par jerome62 dans le forum Forms
    Réponses: 2
    Dernier message: 30/07/2002, 08h32
  5. c: gestion des exceptions
    Par vince_lille dans le forum C
    Réponses: 7
    Dernier message: 05/06/2002, 14h11

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