Salut,
Ca, c'est beaucoup plus complexe à faire... et cela ne sert à rien
En gros Cela signifie que:
- tu dois créer un objet du type de ton exception en dehors du bloc try
- tu dois récupérer l'adresse de de cet objet dans le bloc try en vue de lancer l'exception OU
- que tu passe l'exception par pointeur à la fonction qui risque de la lancer, ce qui implique [1] et [2] et n'apporte strictement rien
En d'autres termes: pourquoi faire simple quand on peut faire compliqué
(pour info, je remettrais plus facilement en cause le fait de récupérer l'exception sous une forme constante que celui de la lancer par valeur et de l'attraper par référence
)
N'oublie pas que tout est fait en C++ pour essayer de t'éviter au maximum le recours aux pointeurs et à tout ce qu'ils peuvent sous-entendre (dont, principalement, l'allocation dynamique)...
Au final, l'utilisation même des pointeurs devrait se limiter aux cas où:
- il est nécessaire de créer dans un objet contenu une relation avec l'objet contenant
- il est nécessaire de créer un objet en relation avec un (ou des) objets de type identique (pile, file, liste, et tous ces genres de choses que la STL implémente de manière si efficace)
- il est nécessaire de créer une relation de contenant à contenu pour laquelle le contenu peut ne pas exister
- il est nécessaire de créer une relation de contenant à contenu pour laquelle la responsabilité de la durée de vie du contenu ne dépend pas du contenant
et l'utilisation de l'allocation dynamique devrait se limiter, à peu de choses près aux cas
- de la mise en oeuvre du polymoprhisme lorsque l'objet polymophe doit être renvoyé par la fonction
- lorsqu'un objet ne pouvant pas être copié doit survivre à la fonction qui le crée afin d'être renvoyé par cette fonction
En dehors de ces cas bien particuliers, l'utilisation de pointeurs et de l'allocation dynamique, surtout si ce n'est pas encadré par une politique d'utilisation de pointeurs intelligents, reviendra souvent à courir le risque de te tirer une balle dans le pied un jour ou l'autre...
Maintenant, ne me fait pas dire ce que je n'ai pas dit:
J'estime, à contrario de ce que pourrait laisser croire ce que j'ai écrit plus haut, qu'il est important de maitriser les phénomènes propres aux pointeurs et à l'allocation dynamique...
Simplement, il faut avouer que, même si le programmeur est chevronné, il souffre de son humanité, qui le rend, par nature, susceptible de commettre une erreur.
Personne n'est donc à l'abri du fait de provoquer, souvent par inattention, un phénomène de fuite de mémoire ou de double libération de la mémoire aux conséquences pouvant être catastrophiques, lorsqu'il s'agit de recourir aux pointeurs et à l'allocation dynamique de la mémoire.
C'est pourquoi le meilleur conseil à donner est d'envisager de n'y recourir que lorsque l'on n'a vraiment pas d'autres solutions et de ne le faire en veillant à apporter un soin et une attention toute particulière à ce que l'on fait
Partager