Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2884 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Exceptions imbriquées

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Exceptions imbriquées

n°1316918
vouzico
Bro Naoned e Breizh
Posté le 02-03-2006 à 13:20:03  profilanswer
 

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 cité 1 fois
Message édité par vouzico le 02-03-2006 à 13:28:10
mood
Publicité
Posté le 02-03-2006 à 13:20:03  profilanswer
 

n°1316920
chrisbk
-
Posté le 02-03-2006 à 13:22:10  profilanswer
 

hein ? bin si c'est ton premier appel a fonction qui leve l'exception ca me parait normal

n°1316922
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 02-03-2006 à 13:22:52  profilanswer
 

ben t'as pas l'impression que c'est normal ? [:pingouino]
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 :
  1. try
  2.   {
  3.      fonction (tagada);
  4.   }
  5.   catch (Exception & )
  6.   {
  7.      cout << "C'est cette exception que je veux :)";
  8.   }


[:petrus75]


---------------
J'ai un string dans l'array (Paris Hilton)
n°1316924
gilou
Modérateur
Modzilla
Posté le 02-03-2006 à 13:25:00  profilanswer
 

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
 
ex :
 
try
{
   ...
   fonction (tagada);
   ...
 
   try
   {
      fonction (tagada);
   }
   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 ??

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+,


Message édité par gilou le 02-03-2006 à 13:25:34
n°1316926
vouzico
Bro Naoned e Breizh
Posté le 02-03-2006 à 13:28:42  profilanswer
 

edit

n°1316929
gilou
Modérateur
Modzilla
Posté le 02-03-2006 à 13:31:05  profilanswer
 

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+,


Message édité par gilou le 02-03-2006 à 13:32:08
n°1318208
slash33
Posté le 03-03-2006 à 22:22:29  profilanswer
 

Sa fonction doit être définie comme ça:
 

Code :
  1. void fonction(var tagada)
  2. {
  3.    throw new Exception();
  4. }


[:petrus75]
 
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...


Message édité par slash33 le 03-03-2006 à 22:25:55
n°1318235
++fab
victime du syndrome IH
Posté le 03-03-2006 à 23:25:37  profilanswer
 

Code :
  1. void fonction(var tagada)
  2. {
  3.    throw new Exception();
  4.          ^^^
  5. }


 
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 ?


Message édité par ++fab le 03-03-2006 à 23:25:56
n°1318271
slash33
Posté le 04-03-2006 à 00:10:33  profilanswer
 

Que je devrais aller me coucher [:petrus75]

n°1318444
++fab
victime du syndrome IH
Posté le 04-03-2006 à 15:57:23  profilanswer
 

:)
 
à tête reposé : c'est pas un miracle si tu arrives à empécher la fuite, en faisant succéder new à throw ?

mood
Publicité
Posté le 04-03-2006 à 15:57:23  profilanswer
 

n°1318515
slash33
Posté le 04-03-2006 à 18:43:12  profilanswer
 

Si si effectivement. Mais je me demande si je n'ai pas confondu avec le THROW (MFC)
 
Non c'est simple les MFC... [:petrus75]


Message édité par slash33 le 04-03-2006 à 18:43:57

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Exceptions imbriquées

 

Sujets relatifs
requetes imbriquéesCSS - problemes de listes imbriquées
[PL/SQL] Curseur et boucles FOR imbriquées [Résolu]prob exceptions php
Spécification de templates imbriquéesCentrer sous IE des div imbriquées
[Topic tuto] Les exceptionsvo mieux voir le dernier msg de ce topic pour comprendre le 1er ??
un pattern pour les Exceptions?[Débutant]Requetes imbriquées
Plus de sujets relatifs à : Exceptions imbriquées


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR