Ho un'applicazione C# che chiama una funzione in una dll C++. Questa funzione può generare varie eccezioni che ereditano std::exception
. Attualmente prendo queste eccezioni in questo modo:Come si ottiene una descrizione dell'errore di std :: exception quando si chiama una dll C++ da C#
try
{
//Call to C++ dll
}
catch (System.Exception exception)
{
//Some error handling code
}
La mia prima domanda è la volontà di questo codice cattura tutto std::exception
? La mia seconda domanda è come posso recuperare la stringa std::exception::what
, se esamino lo exception.Message
ottengo solo "Il componente esterno ha generato un'eccezione".
EDIT: La funzione in questione è in un non gestito dll C++, e importato come questo in C# classe:
[DllImport("SomeDLL.dll")]
public extern static void SomeFunction();
C'è un metodo ToString restituisce una rappresentazione di stringa dell'eccezione corrente. 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- code/150596 # 150596 – celavek