Bonjour,
Pour l'instant la seule m�thode que j'ai trouv� pour r�cup�rer mes exceptions stl natives c'est de les catcher en c++/cli et de lancer une nouvelle exception .net .
1�re m�thode que j'ai impl�ment� : appeler le std::exception::what() pour r�cup�rer le message et le mettre dans une System::Exception
Exemple :
Autre solution, qui pour l'instant revient au m�me : j'ai cr�e une nouvelle classe manag�e ma_lib::managed_std_exeption d�rivant de System::Exception, dont un constructeur prend un std::exception en param�tre. L'utilisation donne :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9 try { //Mon truc qui lance une std::exception } catch(const std::exception & ex) { throw gcnew System::Exception(gcnew System::String(ex.what())); }
Pour l'instant, il n'y a pas d'int�r�t � faire l'un plut�t que l'autre, les deux fonctionnent.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9 try { //Mon truc qui lance une std::exception } catch(const std::exception & ex) { throw gcnew ma_lib::managed_std_exeption(ex); }
(En attendant, je ne cherche pas � faire mieux qu'une exception qui contient un message.)
Je suis dans un cadre ou un projet C# appelle du code C++ natif en passant par du manag�. Je veux que les exceptions natives soient transform�e en exceptions manag�es.
La premi�re solution est d'encadrer dans mes classes manag�es tous les appels natifs par un try catch qui relance une exception .net
Mais si il y avait une possibilit� de faire un op�rateur de cast qui m'�vite �a, �a serait super cool. Une id�e ?
S.
Partager