Question con sur une exception dans un constructeur - C++ - Programmation
Marsh Posté le 08-10-2010 à 08:13:37
http://www.gotw.ca/gotw/066.htm
Une exception ne devrait jamais sortir du constructeur mais etre traiter en son sein.
Marsh Posté le 08-10-2010 à 09:10:39
oliparcol a écrit : Je début en C++ et j'aurais aimé savoir: si je lance une exception dans un constructeur. Je suis obligé d'utiliser un pointeur lorsque j'utilise un objet de cette classe?
|
Aucun probleme avec
Code :
|
(Quant a la reference, je ne vois pas trop quel usage tu envisages)
Joel F a écrit : http://www.gotw.ca/gotw/066.htm |
On ne va pas etre d'accord. C'est le seul moyen d'eviter d'avoir un etat d'erreur pour l'objet si le constructeur peut echouer. (Et je ne me souviens pas que ce soit la conclusion de ce GOTW, et en le survolant ca n'a pas l'air d'etre le cas).
Marsh Posté le 08-10-2010 à 19:18:57
pardon, on ne doit pas laisser leaker une exception provenant d'un truc interne, il faut l'intercepter et la traduire en exception du bon niveau.
Marsh Posté le 09-10-2010 à 19:41:14
Joel F a écrit : pardon, on ne doit pas laisser leaker une exception provenant d'un truc interne, il faut l'intercepter et la traduire en exception du bon niveau. |
C'est bizarre... ce n'est pas ce qui est marqué dans plusieurs sources sur le net... sinon on fait comment pour savoir que la construction d'un objet a échoué ? Il y a toujours l'astuce d'avoir un attribut du style "bool constructionEchouee" et de vérifier la valeur de l'attribut dès qu'on applique des méthodes à l'objet mais c'est quand même bien bien lourd...
Marsh Posté le 09-10-2010 à 19:51:22
Un Programmeur a écrit :
|
Le problème c'est que dans ce cas, l'existence de l'objet est limité au bloc try, donc on ne peut pas l'utiliser plus loins dans le programme.
Marsh Posté le 09-10-2010 à 20:07:16
D'accord. Mais j'ai comme l'impression que ce n'est pas le cas le plus courant où tu peux avoir une exception dans un constructeur. Quand j'ai le cas, je fait généralement du nettoyage avant de sortir de la fonction en condition d'erreur -- assez souvent les destructeur font tout seul le nettoyage d'ailleurs -- plutôt que de continuer avec simplement un pointeur nul. J'imagine bien quelques cas où on peut vouloir le faire, mais ils sont plutôt... exceptionnels.
Marsh Posté le 09-10-2010 à 22:43:10
oliparcol a écrit : |
J'ai lu l'article et ce que j'en retire c'est la méthode "bool constructionEchouee" est pas bonne, qu'on peut lancer des exceptions dans les constructeurs mais il faut toujours traiter les exceptions au bons niveaux.
Marsh Posté le 07-10-2010 à 22:15:22
Bonjour,
Je début en C++ et j'aurais aimé savoir: si je lance une exception dans un constructeur. Je suis obligé d'utiliser un pointeur lorsque j'utilise un objet de cette classe ? Par exemple:
c'est bien impossible d'utiliser une référence vers un objet ou un objet comme variable ?
Merci d'avance,
oliparcol