Bonjour,

Comme le titre l'indique j'aimerai faire de la propagation du style :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
try
{
 // traitement 
}
catch(const std::Exception& e)
{
 // traitement d'erreur local
 throw e;
}
rien de bien méchant.

Par contre je me pose la question dans le cas où il y a plusieurs catch dont un qui hérite de l'autre ou qui pourrait catcher l'autre je m'explique

Prenons le cas où Exception_A hérite de Exception.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
try
{
 // traitement normal
}
catch(const Exception_A& e)
{
 // traitement d'erreur local
 throw e;
} 
catch(const std::Exception& e)
{
 // traitement d'erreur local
 throw e;
} 
catch(...)
{
 // traitement d'erreur local
 throw std::Exception("erreur inconnue");
}
Alors voilà si mon traitement normal envoie un exception de type Exception_A donc je la re-"throw".... mais sera-t-elle "catchée" par le bloc juste en dessous.... et je me pose la même question pour le dernier catch bien sur.

En gros si je fais un simple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
try
{
 // traitement normal
}
catch(const std::Exception& e)
{
 // traitement d'erreur local
 throw e;
} 
catch(...)
{
 // traitement d'erreur local
 throw std::Exception("erreur inconnue");
}
et que je "catche" une "std::Exception" et que je la re-"throw" sera-t-elle "catché" juste en dessous.

Merci d'avance.