Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1380 connectés 

  FORUM HardWare.fr
  Programmation

  [JAVA]: Lever une exception d'un constructeur?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JAVA]: Lever une exception d'un constructeur?

n°96741
Krueger
tout salaire demande dutravail
Posté le 04-02-2002 à 22:28:55  profilanswer
 

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:

Code :
  1. A a = null;
  2. try
  3. {
  4.   a = new A(<arguments> );
  5. }
  6. catch(MyException e)
  7. {
  8.   <gestion de l'exception>
  9. }


 
Dans le constructeur:
- évaluation des arguments
- s'ils sont valides, ça passe
- sinon

Code :
  1. throw new MyException();


 
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
mood
Publicité
Posté le 04-02-2002 à 22:28:55  profilanswer
 

n°96771
benou
Posté le 04-02-2002 à 23:28:23  profilanswer
 

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 ! ;)


---------------
ma vie, mon oeuvre - HomePlayer
n°96772
[FDS]
Posté le 04-02-2002 à 23:41:35  profilanswer
 

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);
 }

n°96779
Krueger
tout salaire demande dutravail
Posté le 05-02-2002 à 00:17:03  profilanswer
 

Heu non, je n'ai jamais fait de constructeur de ce genre. :D Mais bon,je vois bien l'idée.
En tous cas merci pour vos précieux conseils. :hello:


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
n°96829
gfive
Posté le 05-02-2002 à 09:33:02  profilanswer
 

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....

n°96905
darklord22
Nightwish rulezzzzzzzzzzzzz
Posté le 05-02-2002 à 12:29:30  profilanswer
 

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.


---------------
What is popular is not always right, what is right is not always popular :D
n°96929
benou
Posté le 05-02-2002 à 13:24:49  profilanswer
 

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.


---------------
ma vie, mon oeuvre - HomePlayer

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [JAVA]: Lever une exception d'un constructeur?

 

Sujets relatifs
[JAVA + SQL] installation...[java] un moteur de recherche par methodes ca vous interesse?
[Java] applet Vs Application[Java] Comment faire un multi thread
[Java] Comment créer un exécutable d'un prog java ?[ JAVA ] Comment compiler sous linuxMandrake 8.1
[JAVA] Interfaces Graphiques[Java] - Programmer un jeu ?
Interface java ou autre pour insérer un chat irc dans un site ?[JAVA] débutant String
Plus de sujets relatifs à : [JAVA]: Lever une exception d'un constructeur?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR