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

 


Dernière réponse
Sujet : [JAVA]: Lever une exception d'un constructeur?
benou

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.


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
benou

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.

darklord22

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.

gfive 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....
Krueger 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:
[FDS] 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);
 }
benou 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 ! ;)
Krueger 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]


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)