quel intérêt de relancer une exception dans un catch ?

quel intérêt de relancer une exception dans un catch ? - C++ - Programmation

Marsh Posté le 22-01-2009 à 13:06:34    

Bonjour ,
 
Je n'arrive pas à trouver ça sur google:
quel est l'intérêt, en C++,  de relancer une exception dans un catch en ?
 
Merci!


---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.
Reply

Marsh Posté le 22-01-2009 à 13:06:34   

Reply

Marsh Posté le 22-01-2009 à 13:26:30    

frenchtoucco a écrit :

Bonjour ,
 
Je n'arrive pas à trouver ça sur google:
quel est l'intérêt, en C++,  de relancer une exception dans un catch en ?
 
Merci!


 
1/ Quand on a du cleanup a faire mais qu'on ne traite pas l'exception.
L'utilisation du RAII est souvent une meilleure solution.
 
2/ Centraliser le traitement sur les exceptions
 

Code :
  1. void handle()
  2. {
  3.    try {
  4.       throw;
  5.    } catch (E1) {
  6.       ...
  7.    } catch (E2) {
  8.      ...
  9.    }
  10. }
  11. ...
  12. void f1() {
  13.     try {
  14.       ...
  15.     } catch(...) {
  16.        handle();
  17.     }
  18. }
  19. void f2() {
  20.     try {
  21.       ...
  22.     } catch(...) {
  23.        handle();
  24.     }
  25. }


Reply

Marsh Posté le 22-01-2009 à 13:36:22    

a oui ok merci


---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.
Reply

Marsh Posté le 22-01-2009 à 13:41:44    

J'avais suppose le relancement de l'exception catchee, mais on peut lancer une autre exception; par exemple pour adapter des couches concues separement.  La technique 2 est utile pour le faire de maniere homogene.

Reply

Marsh Posté le 22-01-2009 à 13:54:00    

oui c'est bien celle là (homogene) que j'avais en tête effectivement


---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed