Exceptions imbriquées - C++ - Programmation
Marsh Posté le 02-03-2006 à 13:22:10
hein ? bin si c'est ton premier appel a fonction qui leve l'exception ca me parait normal
Marsh Posté le 02-03-2006 à 13:22:52
ben t'as pas l'impression que c'est normal ?
l'exception est chopée une premiere fois, donc tu pars dans le catch et ensuite le programme continue son exécution...
t'as essayé ça ?
Code :
|
Marsh Posté le 02-03-2006 à 13:25:00
vouzico a écrit : J'ai un petit souci : j'ai deux try imbriqués et lorsque je lance une exception, elle ne se retrouve pas dans le bloc que je souhaite |
ben dans ce cas la, il faut virer ton premier appel a fonction (tagada);
Ce qui se passe me semble clair: ton premier appel declenche l'exception que tu attrapes, et donc le code ne parvient jamais jusqu'a ton 2e appel, qui lui declencherait l'exception imbriquée.
EDIT: grilled
A+,
Marsh Posté le 02-03-2006 à 13:31:05
Ben c'est la meme chose: si l'exception est levée par tagada1, tu atteindras jamais l'appel de tagada2 qui leverait lui l'autre exception. Tu mets que tagada1 ne leve pas d'exception, mais d'apres ce que tu as comme comportement, on dirait bien que si.
A+,
Marsh Posté le 03-03-2006 à 22:22:29
Sa fonction doit être définie comme ça:
Code :
|
Au fait, si la fonction peut potentiellement lever une exception, tu es tenu de toujours capturer l'exception et de produire un traitement d'erreur ou de la laisser se propager mais certainement pas de présumer du comportement de la fonction...
Marsh Posté le 03-03-2006 à 23:25:37
Code :
|
Je vois pas bien l'intérêt la ...
Citation : Au fait, si la fonction peut potentiellement lever une exception, tu es tenu de toujours capturer l'exception et de produire un traitement d'erreur ou de la laisser se propager mais certainement pas de présumer du comportement de la fonction... |
Qu'est-ce que tu veux dire ?
Marsh Posté le 04-03-2006 à 15:57:23
à tête reposé : c'est pas un miracle si tu arrives à empécher la fuite, en faisant succéder new à throw ?
Marsh Posté le 04-03-2006 à 18:43:12
Si si effectivement. Mais je me demande si je n'ai pas confondu avec le THROW (MFC)
Non c'est simple les MFC...
Marsh Posté le 02-03-2006 à 13:20:03
J'ai un petit souci : j'ai deux try imbriqués et lorsque je lance une exception, elle ne se retrouve pas dans le bloc que je souhaite
EDIT : ME SUIS MAL EXPRIME !
ex :
try
{
...
fonction (tagada1); //ne lance pas d'exception
...
try
{
fonction (tagada2); //lance une exception
}
catch (Exception & )
{
cout << "C'est cette exception que je veux ";
}
...
}
catch (Exception & )
{
cout << "Mais c'est celle là qui s'affiche :-s";
}
Je voudrais que ca soit celle de "l'intérieur" qui soit attrapée. Auriez vous une idée de comment faire ??
Message édité par vouzico le 02-03-2006 à 13:28:10