Gestion des exceptions dans Visual C++ 6

devmail Messages postés 3 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 19 mai 2003 - 15 mai 2003 à 12:45
devmail Messages postés 3 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 19 mai 2003 - 19 mai 2003 à 00:26
Bonjour a tous,
je suis en cours de developpement d'un programme compose d'un prg principale et de plusieurs dll. J'ai terminer les traitements et souhaite lever des exceptions plutot que des return "error....".

Donc dans une dll je cree le code suivant :

class  MyRecordsetExeption
{
};

class AFX_EXT_CLASS CSuperRecordset 
{
  void Open( ) throw (MyRecordsetExeption)
  {
    // pour le test je force la methode a lancer une exception 
    throw  MyRecordsetExeption();
  }
};


et dans une seconde dll le code suivant :

class test
{
  void executeTraitement(param)
  {
    try
    {
       CSuperRecordset D;
       D.Open();
    }
    catch (MyRecordsetExeption*e)
    {
      // Traitement error
      delete e;
      e = NULL;
    }
};


Quand je compile la premiere dll j'obtient le msg warning :
warning C4290: C++ Exception Specification ignored
(ce messqge pointe sur la portion de code de declaration de la methode Open de la classe)

Quand j'execute la totale cq plante en lancant une messageBox systeme type : Runtime Error ! Abnormal programm termination et quand je lance de debugger le prg plante sur l'instruction throw MyRecordsetExeption(); contenu dans la methode Open.

Je pense que cela est du a l'utilisation d'exception dans des dll mais je ne vois pas ce aue je dois faire pour que cela fonctionne.

Merci pour le coup de main

2 réponses

NitRic Messages postés 402 Date d'inscription mardi 1 mai 2001 Statut Membre Dernière intervention 15 août 2011
16 mai 2003 à 12:50
1) http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore98/html/c4290.asp

2) http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/C4290.asp

Voilà, avec ces 2 liens tu devrais trouver le pourquoi, il y à un petit 'truc' pour éviter ce genre d'erreur, ils disent comment faire. Si tu as d'autres erreurs du genre CXXXX va sur www.msdn.microsoft.com et dans le moteur de recherche tape le code d'erreur CXXXX et tu vas tout savoir sur l'erreur en question, génial non!? ;)

~(.:: NitRic ::.)~
0
devmail Messages postés 3 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 19 mai 2003
19 mai 2003 à 00:26
Bonsoir NitRic et a vous autres
merci pour ta reponse, pour info j'arrive a virer les messages warning lors de la compil mais pour le fonctionnement pas mieux.
Vraiment c'est a n'y rien comprendre car les exceptions fonctionnent tres tres bien dans le cadre d'un programme simple mais lorsque l'on charge des dll c'est une autre affaire.
Je vais encore essayer de retourner le truc dans tous les sens et puis si ca prend trop la tete et ben pas d'exception et j'utiliserais des bon vieux return "code erreur". Dommage le principe des exceptions rend le code plus simple donc plus propre et ainsi plus stable>

merci et bonne soiree
0
Rejoignez-nous