Conversion d'exception stl vers System::exception
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 :
Code:
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()));
} |
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:
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);
} |
Pour l'instant, il n'y a pas d'int�r�t � faire l'un plut�t que l'autre, les deux fonctionnent.
(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.