Ich habe eine C# -Anwendung, die eine Funktion in einer C++ - DLL aufruft. Diese Funktion kann verschiedene Ausnahmen auslösen, die std::exception
erben. Ich fange gerade diese Ausnahmen wie folgt aus:Wie bekomme ich eine std :: Ausnahme Fehlerbeschreibung beim Aufruf einer C++ - DLL aus C#
try
{
//Call to C++ dll
}
catch (System.Exception exception)
{
//Some error handling code
}
Meine erste Frage ist, wird dieser Code fangen alle std::exception
? Meine zweite Frage ist, wie kann ich die std::exception::what
Zeichenfolge abrufen, wenn ich untersuchen exception.Message
Ich bekomme nur "Externe Komponente hat eine Ausnahme ausgelöst".
EDIT: Die fragliche Funktion ist in einem nicht verwalteten C++ dll, und wie dies in der C# Klasse importiert:
[DllImport("SomeDLL.dll")]
public extern static void SomeFunction();
Es gibt eine toString Methode eine String-Darstellung der aktuellen Ausnahme zurückgibt. http://msdn.microsoft.com/en-us/library/system.exception_members.aspx – DumbCoder
http://stackoverflow.com/questions/150544/can-you-catch-a-native-exception-in-c-c code/150596 # 150596 – celavek