devmail
Messages postés3Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention19 mai 2003
-
15 mai 2003 à 12:45
devmail
Messages postés3Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention19 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.
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!? ;)
devmail
Messages postés3Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention19 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>