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 :

Comment faire remonter des exceptions


Sujet :

avec Java

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 136
    Points : 52
    Points
    52
    Par défaut Comment faire remonter des exceptions
    Bonjour,

    j'ai appris que si une méthode est susceptible de lever une exception alors on peut trés bien ne pas traiter l'exception tout de suite et la laisser remonter, puis la traiter par une méthode qui "aura plus de recul" et qui saura mieux la traiter; mais je n'ai pas trouvé d'exemple qui puisse bien m'illustrer cela...

    Pourriez vous me donner un exemple claire qui pourrait me facilite la compréhension, s'il vous plaît.

    Merci pour votre aide

  2. #2
    Expert confirmé
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Points : 4 015
    Points
    4 015
    Par défaut
    Bonjour
    Ce lien devrait t'aider : c'est dans La Faq ou celui ou encore un petit Tutoriel
    Cordialement
    Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

    Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells

  3. #3
    Débutant
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 136
    Points : 52
    Points
    52
    Par défaut
    Bonjour,

    suite à la lecture de ces tutoriels (merci pour les liens d'ailleurs ), plusieurs questions se posent...

    Concernant les exceptions qui héritent d' Exception et que l'on définit nous même...

    Par exemple, lorsqu'une méthode est susceptible de lever une exception, on met à l'en tête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     throws nombreInvalideException
    , par exemple...

    Mais dans quel cas on instancie l'exception en mettant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     throw new nombreInvalideException
    et dans quel cas, on ne rajoute pas (toujours lorsqu'on a mis throws au début)


    Dans quel cas, on met un bloc try...catch dans cette même méthode.Je sais à quoi ils servent, mais dans quel cas, on les mets dans cette même méthode...J'ai lu plusieurs exemples, où parfois, ils sont mis et dans la méthode et dans main...et donc, je ne vois plus trop..


    Je reviens à ma question du début : si une méthode peut lever une exception mais qu'on décide de ne pas la traiter par cette même méthode, ni par la méthode main, mais par une autre méthode; comment faire.


    Je vous remercie bien pour toute l'aide que vous m'apporterez

  4. #4
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 283
    Points : 380
    Points
    380
    Par défaut
    Une exception déclarée dans ta méthode, comme ci dessous, sert tout d'abord à signaler que quelquechose peux ne pas fonctionner correctement (comme lorsque tu divise par 0, c'est impossible à faire donc tu signale qu'il y a un problème.)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void taMethode() throws Exception
    Lorsque tu met du code ensuite dans ta méthode, c'est toi qui foit faire attention aux erreurs qui peuvent se produire, ainsi, si un test (if) relève une erreur, tu peux signaler le disfonctionnement via un jet d'exception :
    Tu peux utiliser la classe d'exception que tu souhaite, cette classe doit néanmoins hériter d'une classe d'exception (les plus basiques étant Exception, Error et RuntimeException)

    Ensuite, lorsque tu utilise ta méthode, comme elle est suceptible de jeter une exception, il faut la gérer (l'attraper) via un bloc "try catch".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    try { // try = essayer en anglais
        // du code
        taMethode(); // on essaie d'utiliser ta méthode
        // encore du code
    } catch (Exception e) {
        // ici tu réagis en fonction de ton exception.
    }

  5. #5
    Débutant
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 136
    Points : 52
    Points
    52
    Par défaut
    Merci bien pour toutes ces explications


    Faire "remonter" une exception signifie : ne pas la gérer à l'intérieur de la méthode qui peut la lever, mais à chaque appel de la méthode ?

    C'est ça qu'on veut dire par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "on peut ne pas gérer une exception tout de suite mais la gérer avec une méthode qui saura mieux le faire ? "

    Cette formulation n'est pas trés "informatique"...mais vous avez compris....

  6. #6
    Membre confirmé Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Points : 565
    Points
    565
    Par défaut
    Citation Envoyé par specsy Voir le message
    Merci bien pour toutes ces explications


    Faire "remonter" une exception signifie : ne pas la gérer à l'intérieur de la méthode qui peut la lever, mais à chaque appel de la méthode ?

    C'est ça qu'on veut dire par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "on peut ne pas gérer une exception tout de suite mais la gérer avec une méthode qui saura mieux le faire ? "

    Cette formulation n'est pas trés "informatique"...mais vous avez compris....

    Ca veut dire que tu as par exemple :
    - une méthode "diviser"
    - un fonction "calculer"

    "calculer" appelle "diviser"
    diviser fait une division par 0 => renvoie une exception au niveau au dessus ("calculer" )
    et "calculer" affiche quelque chose comme "calcul impossible" parce qu'il a recu une exception (bloc try/catch)

    Apres l'interet par exemple est de dire que si tu as calculer, diviser et racinecarree, ces 2 derniers peuvent envoyer un meme type d'xception ( avec un message different) qui sera traité identiquement dans calculer
    exemple : "calcul impossible :" +message " division par 0"
    ou "calcul impossible :" + message " pas de racine d'un nombre négatif"
    C'est pas parce que ca marche que c'est bon!!
    Pensez au bouton "Résolu"
    Je ne réponds pas en privé aux questions

Discussions similaires

  1. Comment faire appel à des modules ?
    Par wilsony dans le forum Langage
    Réponses: 2
    Dernier message: 09/07/2006, 13h50
  2. [Debutant] comment faire passer des donnée ???
    Par cyrill.gremaud dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 17/01/2006, 22h28
  3. Réponses: 4
    Dernier message: 03/04/2005, 14h26
  4. Réponses: 17
    Dernier message: 04/02/2005, 12h05
  5. Réponses: 5
    Dernier message: 08/03/2004, 10h28

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