Wyłapywanie wyjątków do logowania w aplikacji C ++ CLI

Próbuję przechwycić wszystkie wyjątki w aplikacji C ++ / CLI, aby móc je rejestrować i rejestrować (w tym śledzenie stosu). Do tej pory mam jakiś kod, który wygląda obiecująco:

[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
    // Enabling Windows XP visual effects before any controls are created
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false); 

    // Create the main window and run it
    try
    {
        Application::Run(gcnew MainForm());
    }
    catch( System::Exception^ e )
    {
        String^ message = gcnew String("");
        System::Exception^ exceptionRecursor = e;

        message = "ERROR: Uncaught exception encountered!\n\n";
        while( exceptionRecursor )
        {
            message += exceptionRecursor->Source+"\n\t";
            message += exceptionRecursor->Message+"\n\t";
            message += exceptionRecursor->StackTrace+"\n\n";
            exceptionRecursor = exceptionRecursor->InnerException;
        }
        MessageBox::Show(message);
    }

    return 0;
}

... ale zamiast zrzucić okno dialogowe z moimi błędami w porządkowaniu, dostaję coś innego:

An unhandled exception of type 'System.Reflection.TargetInvocationException' occurred in mscorlib.dll

Additional information: Exception has been thrown by the target of an invocation.

Czy to dlatego, żeRun komenda próbuje w jakiś sposób uporać się z wyjątkiem? Czy muszę zajmować się sprawami w środkuMainForm gdzieś? ... czy jest jakiś inny (lepszy) sposób na to.

Zapominając na chwilę o źródle błędu (jestem w połowie cyklu rozwojowego i wciąż debuguję), byłoby miło móc wyłapać te błędy i stworzyć zgrabny ślad śledzenia, który mógłby pozostać w kodzie aż do wdrożenia i daj nam znać, kiedy coś idzie nie tak. Ostatecznie zawinąłem raport o błędzie w coś, co może zgłosić przez Internet.

questionAnswers(2)

yourAnswerToTheQuestion