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 :

Avis sur les exception


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2006
    Messages
    716
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 716
    Par défaut Avis sur les exception
    Bonjour,

    je voudrais avoir un avis d'une personne qui connait bien le language java.

    Je voudrais savoir s'il est mauvais d'utiliser toujours throws Excpetion au lieu de try ... catch.

    Si on utilise try... catch je pense qu'il n'y a pas besoin de throws Exception. Dans le catch la plupart du temps je fais e.printStackTrace ou e.getMessage avec System.out.println

    Merci pour vos réponses

  2. #2
    Membre éprouvé Avatar de bygui
    Homme Profil pro
    PLM/ALM
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : PLM/ALM
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Par défaut
    bonjour,
    throws exception ne fais fais que renvoyer l'erreur plus haut dans l'application. elle ne dispense pas d'utiliser le groupe try catch.
    Son utilisation permet d'augmenter la lisibilité de ton code, pour ne pas gérer des erreurs a tout les niveaux.
    L'interception d'une exception peut te permettre aussi de lancer un nouveau traitement. printStackTrace ne sert que pour le debuguage lors de la conception (voir pendant l'utilisation).

  3. #3
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Comme le dit bygui, printStackTrace n'est pas la seule chose à faire quand on catch une exception, en règle général il y a un traitement particulier à faire. (remontée d'une erreur à l'utilisateur via une popup, arrêt de l'application, tentative de connexion à un serveur, ...) C'est pour cela qu'il est important de gérer l'exception au bon niveau, ce que permet de faire throw.

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    ajountons que, mettre sur une méthode "throws Exception" est très mauvais, car là tu déclare indistinctement tout le panel d'exception existant, l'appelant n'a aucun idée de l'exception réelle que tes méthodes seraient sceptible de renvoyer. Quand tu décide de faire remonter des exception (ce qui est courant et normal), il faut mettre des directive throws qui visent explicitement ces types d'exception, pas des types parent trop généraux. Exemple, un méthode tu utilise pour gerer un fichier serait suceptible d'avoir des erreurs d'IO (mauvais fichier, mauvaios format, etc) ou des erreurs d'état (exemple théorique, on a pas encore défini sur quel fichier travailler ni sur quel format travaille). Ta méthode déclarerais alors "throws IOException, IllegalStateException".

    Ne jamais oublier, dans la javadoc, de mentionner pour chaque exception dans quel cas elle peut etre levée

  5. #5
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Perso, quand j'ai plus de 5 exceptions throwsées, je mets throws Exception, point barre. Cela n'empêche nullement un appelant de catcher une exception en particulier.

    Je considère en effet que, à partir d'un certains nombre d'exceptions, la méthode peut avoir un comportement si varié qu'il vaut mieux assumer cette variabilité. Cela veut dire : Débrouillez-vous, je peux faire n'importe quoi. Par exemple, un test junit fait souvent ainsi (chez moi, tout le temps), et cela me parait bien justifié.

    Après, évidemment, si ce procédé est génant, alors je crée une exception métier, comme on dit.

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    J'ai travaillé avec des api qui lancaient parfois 10 exceptions sur la même méthode.... Franchement c'est du n'importe quoi Mais si j'avais vu à la place un 'throws Exception' là j'aurais fait un jaunisse ...... Tu sais pas ce que çà lance, et si tu fait un 'catch (Exception e) tu te chope aussi toutes les runtimeException que t'as peut etre pas envie de catcher....

    LE cas de junit est particulier car, là, la règle est inversée, c'est l'appelant qui, sans connaitre au départ la méthode, l'autorise à renvoyer tout est n'importe quoi (en gros tout ce qui est pas exception junit est traité comme un failure). Et, effectivement, dans ce cas, les méthodes test peuvent renvoyer ce qu'elles veulent.

    Comme toujours, peser le pour est le contre. Je suis personellement contre le throws Exception pour les méthodes d'api publique (utilisable par d'autres développeurs ou sois meme)

Discussions similaires

  1. Donnez votre avis sur les articles de Developpez.com
    Par Geronimo dans le forum C++Builder
    Réponses: 13
    Dernier message: 14/01/2007, 22h00
  2. Donnez votre avis sur les articles de Developpez
    Par Anomaly dans le forum Contribuez
    Réponses: 37
    Dernier message: 29/05/2006, 21h48
  3. Vos avis sur les Blog's SVP
    Par Marc Lussac dans le forum Evolutions du club
    Réponses: 9
    Dernier message: 16/02/2005, 15h21
  4. Votre avis sur les Logos Nouveau / MAJ, Actualisé, etc...
    Par Marc Lussac dans le forum Evolutions du club
    Réponses: 32
    Dernier message: 11/09/2004, 01h17
  5. Problem avec les *.AVI sur les panels
    Par NaDiA_SoFt dans le forum C++Builder
    Réponses: 3
    Dernier message: 31/08/2003, 22h50

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