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 :

Question à propos les exceptions


Sujet :

avec Java

  1. #1
    Débutant  
    Inscrit en
    Mai 2006
    Messages
    705
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 705
    Points : 117
    Points
    117
    Par défaut Question à propos les exceptions
    Bonjour à toutes et à tous,

    J'ai le code suivant:

    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
     
    class A{
      void jouer() throws Exception{throw new Exception();} 
    }
     
    class B extends A{
     
      void jouer(){
          System.out.println("Hello");
      }
    }
     
    class Tester{
       public static void main(String[] args){
        A a = new B();
         a.methode();
    }
    }
    L'exécution de ce code me révèle une erreur de compilation au niveau de la ligne:

    a.methode();
    C'est à dire qu'il faut entourer cette instruction avec un bloc de try/catch!
    Je me demande pourquoi puisque la méthode jouer qui va être invoqué c'est celle de l'objet B et non pas de la classe mère (c'est un polymorphisme si je ne me trompe pas, nn ).... Et puisque la signature de la méthode jouer de la classe B ne contient pas le throws Exception alors pourquoi faut-il faire le try/catch?

    J'espère que vous m'avez compris et merci à l'avance!

  2. #2
    Membre confirmé
    Avatar de Laine
    Femme Profil pro
    Doctorat informatique
    Inscrit en
    Mars 2013
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Algérie

    Informations professionnelles :
    Activité : Doctorat informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 238
    Points : 646
    Points
    646
    Par défaut
    Salut

    Tu parles de la méthode jouer mais là je vois la méthode "méthode" qui est appelée ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class Tester{
       public static void main(String[] args){
        A a = new B();
         a.methode();
    }

  3. #3
    Membre actif
    Homme Profil pro
    Développeur Java / JEE
    Inscrit en
    Février 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java / JEE

    Informations forums :
    Inscription : Février 2008
    Messages : 185
    Points : 293
    Points
    293
    Par défaut
    Bonjour,

    Tu confonds une erreur de compilation et une exception.
    L'erreur de compilation c'est quand tu as fait une faute de syntaxe dans ton code, alors qu'une exception est une erreur que tu gères de manière programmée.
    Et comme le dit Laine, il te faudrait plutôt écrire :

    Mathieu

  4. #4
    Membre confirmé
    Avatar de Laine
    Femme Profil pro
    Doctorat informatique
    Inscrit en
    Mars 2013
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Algérie

    Informations professionnelles :
    Activité : Doctorat informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 238
    Points : 646
    Points
    646
    Par défaut
    Ton code est parfaitement correct et ce qui se passe est normal.
    En polymorphisme, une méthode dans la classe fille ne peut pas avoir plus de restriction que son équivalent dans la classe mère. C'est à dire que cela est faut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class A{
      void jouer() {} 
    }
     
    class B extends A {
     
      void jouer() throws Exception{
          System.out.println("Hello");
      }
    }
    A présent, oui tu dois entourer a.jouer par un bloc Try/catch
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    try {
    			a.jouer();
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    Car avec cette déclaration
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    A a = new B();
    //plus clairement
    A a; //exception détectée
    a= new B();//exception non prise en charge
    La JVM va s'intéresser au type de a, relève une exception mais qui à l'exécution n'est pas gérer par la méthode de B. D'où l'exception qui est provoquée

Discussions similaires

  1. Question à propos des exceptions
    Par L'aigle de Carthage dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 05/01/2013, 23h25
  2. Encore une question sur les exceptions
    Par tnarol dans le forum Général Java
    Réponses: 6
    Dernier message: 01/03/2011, 12h54
  3. Question à propos les clés SSH
    Par L'aigle de Carthage dans le forum Sécurité
    Réponses: 3
    Dernier message: 10/02/2011, 13h04
  4. Question sur les exceptions catch / non catch
    Par MrEddy dans le forum Général Java
    Réponses: 2
    Dernier message: 21/10/2010, 12h25
  5. Questions sur les exceptions et finally
    Par _LittleFlea_ dans le forum Général Java
    Réponses: 10
    Dernier message: 23/03/2010, 16h08

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