Précédent   Forum du club des développeurs et IT Pro > Java > Communauté Java > Débats

Débats Les débats et sondages sur le langage et les technologies Java

Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Affichage des résultats du sondage: Êtes-vous pour ou contre cette proposition ?
Pour 334 86,75%
Contre 51 13,25%
Votants: 385. Vous ne pouvez pas participer à ce sondage.

Publicité
'
Réponse
 
Outils de la discussion
Vieux 14/08/2008, 14h15   #161
_skip
Expert Confirmé Sénior
 
Avatar de _skip
 
Homme
Développeur d'applications
Inscription : novembre 2005
Messages : 2 562
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
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 562
Points : 6 398
Points : 6 398
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.
_skip est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2008, 15h07   #162
deltree
Membre confirmé
 
Inscription : mai 2007
Messages : 242
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 242
Points : 269
Points : 269
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.

Citation:
-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.
deltree est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2008, 15h12   #163
adiGuba
Expert Confirmé Sénior
 
Avatar de adiGuba
 
Homme
Développeur Java/Web
Inscription : avril 2002
Messages : 12 654
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Corse (Corse)

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

Informations forums :
Inscription : avril 2002
Messages : 12 654
Points : 22 428
Points : 22 428
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++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java Présentation de Java SE 7 (commentaires)
adiGuba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2008, 04h01   #164
OWickerman
Membre éclairé
 
Inscription : décembre 2007
Messages : 222
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 222
Points : 311
Points : 311
Pour, mais avec une syntaxe bien pensée.
OWickerman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2008, 11h20   #165
nonpoluant
Membre du Club
 
Inscription : août 2008
Messages : 47
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 47
Points : 46
Points : 46
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.
nonpoluant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2008, 11h23   #166
adiGuba
Expert Confirmé Sénior
 
Avatar de adiGuba
 
Homme
Développeur Java/Web
Inscription : avril 2002
Messages : 12 654
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Corse (Corse)

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

Informations forums :
Inscription : avril 2002
Messages : 12 654
Points : 22 428
Points : 22 428
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++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java Présentation de Java SE 7 (commentaires)
adiGuba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2008, 18h34   #167
Dog Eata
Invité de passage
 
Inscription : octobre 2008
Messages : 4
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 4
Points : 4
Points : 4
Par défaut Pour

Pour, à condition de pouvoir spécifier le type de l'erreur attrapée :

Code :
1
2
3
4
5
6
7
try {
	// Tentative
}
catch (SQLException e : SQLWarning | BatchUpdateException) {
	// Echec
	e.getSQLState();
}
C'est plus précis que :

Code :
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 :
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.
Dog Eata est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2008, 14h57   #168
fridobox
Membre à l'essai
 
Inscription : mars 2008
Messages : 20
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mars 2008
Messages : 20
Points : 22
Points : 22
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.
fridobox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2009, 14h12   #169
*alexandre*
Inactif
 
Alexandre Jaquet
Inscription : mai 2006
Messages : 2 199
Détails du profil
Informations personnelles :
Nom : Alexandre Jaquet
Âge : 33

Informations forums :
Inscription : mai 2006
Messages : 2 199
Points : 1 902
Points : 1 902
pourquoi pas un

catch(Exception ...exs) {

}
*alexandre* est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2009, 15h18   #170
Uther
Expert Confirmé Sénior
 
Avatar de Uther
 
Homme
Inscription : avril 2002
Messages : 2 676
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2002
Messages : 2 676
Points : 5 102
Points : 5 102
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.
Uther est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2009, 16h13   #171
deltree
Membre confirmé
 
Inscription : mai 2007
Messages : 242
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 242
Points : 269
Points : 269
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?
deltree est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 13h56.


 
 
 
 
Partenaires

Hébergement Web