: Lever une exception d'un constructeur? [JAVA] - Programmation
Marsh Posté le 04-02-2002 à 23:28:23
non, je trouve pas ca incorrect ...
remarque : Si cette classe n'est pas amenée à être utilisée par les couches hautes (que c'est une classe utilitaire de ton projet), tu peux lancer une Error (ou une classe en héritant) plutot qu'une exception. Ca évite d'alourdir son utilisation en obligeant les try/catch.
Par contre, c'est dangereux : il ne faut pas abuser de ce genre de pratique.
Garde bien à l'esprit qu'une exception doit être exceptionnelle !
Marsh Posté le 04-02-2002 à 23:41:35
Ta solution est bonne, puisque tu fais le contrôle dans le constructeur ce qui évite de faire des tests à chaque fois et en plus ça évite au développeur qui ne connaît pas bien ta classe de se planter sur les contrôles.
Je te donne un petit constructeur que tu dois bien connaître:
public File(String pathname) {
if (pathname == null) {
throw new NullPointerException();
}
this.path = fs.normalize(pathname);
this.prefixLength = fs.prefixLength(this.path);
}
Marsh Posté le 05-02-2002 à 00:17:03
Heu non, je n'ai jamais fait de constructeur de ce genre. Mais bon,je vois bien l'idée.
En tous cas merci pour vos précieux conseils.
Marsh Posté le 05-02-2002 à 09:33:02
Benou : je vois pas en quoi une exception devrait être exceptionnelle : c'est un mécanisme de gestion d'erreur très pratique, pourquoi pas s'en servir?? Après, évidement, ça dépent de plusieurs choses, mais si par exemple, tu codes un truc qui interragit beaucoup avec l'utilisateur et d'autres systèmes (réseau, database, etc), tu auras énormément d'exceptions, au moins dans les parties qui gèrent les interactions....
Marsh Posté le 05-02-2002 à 12:29:30
gfive a écrit a écrit : Benou : je vois pas en quoi une exception devrait être exceptionnelle : c'est un mécanisme de gestion d'erreur très pratique, pourquoi pas s'en servir?? Après, évidement, ça dépent de plusieurs choses, mais si par exemple, tu codes un truc qui interragit beaucoup avec l'utilisateur et d'autres systèmes (réseau, database, etc), tu auras énormément d'exceptions, au moins dans les parties qui gèrent les interactions.... |
ce que voulait dire benou c'est que tu devais designer tes classes et leurs interactions de manière à ce qu'elles levent le moins possible d'exceptions c'est tout.
Marsh Posté le 05-02-2002 à 13:24:49
gfive a écrit a écrit : Benou : je vois pas en quoi une exception devrait être exceptionnelle : c'est un mécanisme de gestion d'erreur très pratique, pourquoi pas s'en servir?? |
voila. c'est un mécanisme de gestion d'erreur. Les exceptions ne doivent pas être déclenchés si le programme se déroule de façon normal. Seulement dans des cas d'erreurs qui ont été prévus.
Marsh Posté le 04-02-2002 à 22:28:55
C'est que j'ai une classe qui ne doit s'instancier qu'à certaines conditions, suivant les arguments envoyés à sa construction. Donc je me disais qu'il serait plus naturel de déléguer à son constructeur ce genre de vérification.
Exemple typique:
Dans le constructeur:
- évaluation des arguments
- s'ils sont valides, ça passe
- sinon
Qu'en pensez-vous? Vaut-il mieux effectuer la vérification avant d'appeler le constructeur?
[edtdd]--Message édité par Krueger--[/edtdd]
---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi