2016-05-27 15 views
0

Wir haben eine C# -Anwendung, die eine Reihe von Methoden in einer C++ CLI-Wrapper-DLL aufruft; Dies wiederum ruft eine Anzahl von nicht verwalteten Funktionen in einer DLL von Drittanbietern auf, auf die wir keinen Zugriff haben.Unhanded Ausnahme in C# im Gespräch mit C++ CLI Wrapper

Die Codebausteine ​​in der C# sind zu 100% in einem try, Catch (Exception e) -Block, aber wir haben gerade eine unhanded Ausnahme Pop-up.

Mit Blick auf das Ereignisprotokoll auf dem Server war der letzte Teil des Stack-Trace die Methode auf der Wrapper-App.

Es gibt keine Threading oder ähnliches in unserem Teil der Anwendung, so kann ich nur davon ausgehen, dass etwas in der 3rd Party DLL passiert, die das Problem verursacht.

Wie kann ich das so strukturieren, dass alle Ausnahmen behandelt werden?

Update: Die Ausnahme, die ein System.AccessViolationException

+1

Könnte ein CSE oder SOE sein, native Code selbst wird Failfast auf die wirklich böse Sachen. Die Meldung könnte sehr einfach oder unmöglich sein. Absichtlich nicht zu sagen, was Sie darüber wissen, ist eine sehr unproduktive Art, um Hilfe zu bitten. –

+0

Ich habe die Frage mit der Ausnahme aktualisiert, die geworfen wird. Habe nicht bemerkt, dass es relevant war! – GreatSamps

+0

Haben Sie den Abschnitt "AccessViolationException" gelesen und versuchen, Blöcke zu fangen? https://msdn.microsoft.com/en-us/library/system.accessviolationexception%28v=vs.110%29.aspx – Johan

Antwort

0

Gemäß den von Johan geteilt link geworfen wird:

Access und try/catch-Blöcke

mit dem Start .NET Framework 4, AccessViolationException-Ausnahmen, die von der allgemeinen Sprachlaufzeit ausgelöst werden, werden von der Fanganweisung nicht behandelt in einem strukturierten Ausnahme-Handler , wenn die Ausnahme außerhalb des von der Common Language Runtime reservierten Speichers auftritt. Um eine solche AccessViolationException-Ausnahme zu behandeln, sollten Sie das Attribut HandleProcessCorruptedStateExceptionsAttribute auf die Methode anwenden, in der die Ausnahme ausgelöst wird.