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

Affichage des résultats du sondage: Êtes-vous pour ou contre cette proposition ?

Votants
385. Vous ne pouvez pas participer à ce sondage.
  • Pour

    334 86,75%
  • Contre

    51 13,25%
Langage Java Discussion :

JDK 7: Proposition 7 : Pouvoir catcher plusieurs exceptions en une fois [Débat]


Sujet :

Langage Java

  1. #161
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    La seule chose que Java impose, c'est de déclarer les checked-exception que l'on remonte...
    a++
    T'avais peut être raison sur la stacktrace, j'ai peut être confondu c# et java lorsque j'ai dit qu'un throw ex; modifiait la stacktrace de ex. En c# c'est ce qui se produit, pour java pas le coeur de vérifier alors je te crois sur parole.
    Mais le problème de fond reste toujours le même, si tu relances une exception de type "Exception" tu devras décorer toutes tes méthodes de throws Exception ce qui casse tout le concept.

  2. #162
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 335
    Points : 511
    Points
    511
    Par défaut
    Citation Envoyé par _skip Voir le message
    -Tu peux tout à fait catcher exception du moment que tu fais une propagation en bonne et due forme et sans perte de l'information, java impose d'éviter ce genre de chose à cause des checked exceptions, mais dans d'autres langages c'est possible et tout à fait propre et sérieux.
    Justement, je ne parles pas de ce qu'impose java, mais de ce que l'on s'impose à soi même pour garder un code propre donc maintenable.

    -finally ça se déclenche aussi si tout s'est bien passé, c'est l'endroit idéal pour libérer des ressources mais pas pour effectuer un rollback.
    Euh oui, là j'ai déconné à plein tube, finally c'est plutôt pour une fermeture de connection, de fichier...
    il n'empêche que le cas du rollback est justement particulier: on doit le faire au plus haut niveau du service pour annuler toutes les opérations du service, ce qui rejoint mon cas de service de haut niveau.
    Et du reste, on doit refaire un try catch dans le catch car on n'est pas sûr d'avoir toujours la connection si l'exception est justement une coupure de connection.

  3. #163
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par _skip Voir le message
    Mais le problème de fond reste toujours le même, si tu relances une exception de type "Exception" tu devras décorer toutes tes méthodes de throws Exception ce qui casse tout le concept.
    Dans le cas des checked-exceptions seulement (ce qui n'existe pas en C#).

    Si tu manipules des unchecked-exceptions (RuntimeException en Java) tu te retrouveras exactement dans le même cas qu'en C#.

    Maintenant on pourrait faire un débat sur l'intérêt des checked-exception, mais c'est un autre sujet.

    a++

  4. #164
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 222
    Points : 434
    Points
    434
    Par défaut
    Pour, mais avec une syntaxe bien pensée.
    La sécurité de l'emploi
    "Ce n’est pas une pratique médicale sensée que de risquer sa vie en se soumettant à une intervention probablement inefficace afin d’éviter une maladie qui ne surviendra vraisemblablement jamais."
    Docteur Kris Gaublomme, médecin belge ("Vaccins et maladies auto-immunes")

  5. #165
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 48
    Points : 64
    Points
    64
    Par défaut
    C'est vrai que voir un separateur | comme ça, me fait plutot penser soit à du C pour separer des options du genre O_CREAT | O_RDWR soit à de l'OCaml pour separer des constructeurs ABR = Nil | Node of (int*ABR*ABR)
    Mais pas habitué à ça en java pour ma part.

    J'aimerais avoir une façon simple de catcher toutes les exceptions d'un coup sans avoir à faire une chaine à ralonge.

  6. #166
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par nonpoluant Voir le message
    C'est vrai que voir un separateur | comme ça, me fait plutot penser soit à du C pour separer des options du genre O_CREAT | O_RDWR soit à de l'OCaml pour separer des constructeurs ABR = Nil | Node of (int*ABR*ABR)
    Mais pas habitué à ça en java pour ma part.
    Cela existe pourtant aussi en Java et la signification est très claire : "OU" !

    Citation Envoyé par nonpoluant Voir le message
    J'aimerais avoir une façon simple de catcher toutes les exceptions d'un coup sans avoir à faire une chaine à ralonge.
    Pour catcher toutes les exceptions on peut utiliser catch(Exception)... mais ce n'est pas très propre et peut poser d'autres problèmes (comme traiter des exceptions que l'on ne souhaiterais pas).


    a++

  7. #167
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Pour
    Pour, à condition de pouvoir spécifier le type de l'erreur attrapée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    try {
    	// Tentative
    }
    catch (SQLException e : SQLWarning | BatchUpdateException) {
    	// Echec
    	e.getSQLState();
    }
    C'est plus précis que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    try {
    	// Tentative
    }
    catch (SQLException e) {
    	// Echec
    	e.getSQLState();
    }
    car on attrape pas toutes les SQLException.
    En même temps cela évite les lourdeurs du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    try {
    	// Tentative
    }
    catch (SQLWarning e) {
    	// Echec
    	e.getSQLState();
    }
    catch (BatchUpdateException e) {
    	// Echec
    	e.getSQLState();
    }
    En cas d'omission du type de retour il pourrait être interprété comme étant simplement Exception. En effet, la plupart des exceptions usuelles ne comportent pas de méthodes en plus de celles déclarées dans Exception.

  8. #168
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2008
    Messages : 20
    Points : 30
    Points
    30
    Par défaut Mouuuai
    Citation Envoyé par Gargamail Voir le message
    Contre.
    À mon avis,
    • soit il y a une classe/interface mère pour les exceptions qu'on veut regrouper,
    • soit les exceptions sont mal définies et cette classe/interface mère devrait exister.
    Je suis de cet avis. Ce n'est pas peine de compliquer les choses. Si c'est vraiment le même traitement, il suffit de le mutualiser dans une méthode privée.

  9. #169
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    pourquoi pas un

    catch(Exception ...exs) {

    }

  10. #170
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 562
    Points : 15 489
    Points
    15 489
    Par défaut
    Déjà posé plusieurs fois.
    J'ai la flemme de la refaire en complet mais avec un catch sur Exception, on va catcher toutes les exceptions y compris les exceptions unchecked(null pointeur, division par 0, ...) qui normalement ne sont pas interceptées.

  11. #171
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 335
    Points : 511
    Points
    511
    Par défaut Solution adoptée par Sun
    Selon les articles suivants, cette partie sera intégrée à Java 7 avec des | comme séparateurs:

    http://tech.puredanger.com/2009/02/16/java7-update/
    http://tech.puredanger.com/java7
    https://jdk7.dev.java.net/
    http://blogs.sun.com/theplanetarium/...ge_changes_for

    ça pourrait faire l'objet d'un nouveau Thread unique pour tout java7, le débat sur les nouveautés java7 est obsolète?

Discussions similaires

  1. [Débutant] Gestion de plusieurs exceptions dans une sub
    Par Attila54 dans le forum VB.NET
    Réponses: 14
    Dernier message: 17/08/2013, 19h29
  2. [FPDF] Générer plusieurs PDF en une fois
    Par mdr_cedrick dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 02/04/2009, 16h22
  3. [MySQL] plusieurs requetes en une fois
    Par maximenet dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 31/07/2006, 11h57
  4. [MFC] Checker plusieurs bouton en une fois
    Par kacedda dans le forum MFC
    Réponses: 2
    Dernier message: 08/03/2006, 17h10
  5. Réponses: 13
    Dernier message: 21/12/2005, 12h04

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