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 :

Question sur les exceptions


Sujet :

Langage Java

  1. #1
    Membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2013
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2013
    Messages : 117
    Points : 46
    Points
    46
    Par défaut Question sur les exceptions
    Bonjour.
    je voudrais savoir quelle est la conséquence de mettre throw e dans un catch ?

    Ceci car j’utilise sonar pour vérifier la qualité de mon code et il me renvoi un bug majeur lorsque je mets printstackstrace(e) dans mon catch.
    En revanche, il ne me dit plus rien si je mets throw e;

    Merci pour vos explications.

  2. #2
    Membre expert

    Avatar de Songbird
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Juin 2015
    Messages
    493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 493
    Points : 3 872
    Points
    3 872
    Billets dans le blog
    8
    Par défaut
    Salut,
    je voudrais savoir quelle est la conséquence de mettre throw e dans un catch ?
    Si tu n'as pas un autre catch dans le premier catch, rien de spécial. Ça fait planter ton programme en conservant la ligne à laquelle l'exception a été créée.

    Je ne connais pas sonar, mais il se peut qu'il n'apprécie pas trop la gestion d'erreur à coup de printStackTrace(). Il doit s'attendre à toujours recevoir une exception, j'imagine.
    Avant de poster: FAQ Rust; FAQ Dart; FAQ Java; FAQ JavaFX.
    Vous souhaiteriez vous introduire au langage Rust ? C'est par ici ou ici !
    Une question à propos du langage ? N'hésitez pas à vous rendre sur le forum !


    Pour contribuer à la rubrique, vous pouvez me contacter par MP (Sorry, we're closed!) ou contacter directement la rédaction.

  3. #3
    Membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2013
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2013
    Messages : 117
    Points : 46
    Points
    46
    Par défaut
    Merci, je vais certainement mettre partout où j’avais un printstacktrace un throw du coup.
    Le fait de rentrer dans un catch fait systématiquement planter un programme ?

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    La différence essentielle entre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    catch(UneException e) {
       e.printStackTrace();
    }
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    catch(UneException e) {
       throw e;
    }
    c'est que dans le premier cas, l'exécution de la méthode en cours ne s'arrête pas. En cas d'exception, il se peut donc qu'on exécute un code potentiellement non exécutable (incohérent ou pouvant causer des exceptions). Il faut donc probablement chercher ailleurs dans la méthode (après le catch) si l'absence de rupture d'exécution de la méthode n'est pas la cause d'un bug majeur (une variable à null par exemple)

    Quand au second cas, il ne devrait même pas être écrit : ça ne sert à rien de catcher une exception pour la relancer (et ça consomme un peu de ressource, à moins que le compilateur fasse sauter directement), autant la laisser passer à l'appelant. Mixer les deux ne devraient pas être fait non plus : on risque d'avoir une stacktrace alors que le traitement dans l'appelant est peut-être un contournement qui fait qu'un résultat est bien produit : on se retrouve avec une trace d'exception alors que tout s'est bien passé. Si on passe une exception à l'appelant, ne pas traiter cette exception, le but de la passer à l'appelant voulant dire "je ne sais pas comment réagir pour cette exception à ce niveau du code alors je laisse un appelant ayant un contexte suffisant pour le faire.

    Citation Envoyé par GDS_Strou Voir le message
    Le fait de rentrer dans un catch fait systématiquement planter un programme ?
    Non, ça dépend justement de comment on traite l'erreur.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2013
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2013
    Messages : 117
    Points : 46
    Points
    46
    Par défaut
    Merci beaucoup, c’est très clair comme ça.
    Juste une question, le throw permet de continuer le programme tout comme le printstacktrace ?

  6. #6
    Membre expert

    Avatar de Songbird
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Juin 2015
    Messages
    493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 493
    Points : 3 872
    Points
    3 872
    Billets dans le blog
    8
    Par défaut
    Juste une question, le throw permet de continuer le programme tout comme le printstacktrace ?
    Sauf si l'envoi est récupéré dans un autre contexte, non. Lorsqu'une exception non-gérée est lancée, ça fait planter le thread courant.
    Avant de poster: FAQ Rust; FAQ Dart; FAQ Java; FAQ JavaFX.
    Vous souhaiteriez vous introduire au langage Rust ? C'est par ici ou ici !
    Une question à propos du langage ? N'hésitez pas à vous rendre sur le forum !


    Pour contribuer à la rubrique, vous pouvez me contacter par MP (Sorry, we're closed!) ou contacter directement la rédaction.

Discussions similaires

  1. Question sur les exceptions
    Par Greed29 dans le forum Langage
    Réponses: 2
    Dernier message: 26/05/2016, 09h51
  2. Question sur les exceptions
    Par mokochan dans le forum Débuter
    Réponses: 16
    Dernier message: 23/07/2015, 08h59
  3. Encore une question sur les exceptions
    Par tnarol dans le forum Général Java
    Réponses: 6
    Dernier message: 01/03/2011, 12h54
  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