2012-05-09 5 views
17

Ich habe eine gemischte .NET- und native Code-Konsolenanwendung. Der Anwendungsprozess wird aufgrund des schwerwiegenden Fehlers der Visual C RunTime Library beendet. Auch wenn ich die folgende verwende, wird der verwalteten Code nicht die native Ausnahme abfangen:Kann native Ausnahme in verwaltetem Code nicht abfangen

  1. Try/Catch-Block
  2. AppDomain.UnHandledExption += ...
  3. die RuntimeCompatibilityAttribute(WrapNonExceptionThrows = true) in der AssmblyInfo Datei-Kennzeichnung.

Was kann ich noch tun?

Antwort

21

Native Ausnahmen haben sich in .NET 4 geändert, sodass sie nicht mit einem Standard-Catch-Block erfasst werden können. Sie müssen die Funktion, bei der die Ausnahme ausgelöst wird, als [HandleProcessCorruptedStateExceptions] markieren, um sie abfangen zu können.

hier mehr, http://msdn.microsoft.com/en-us/magazine/dd419661.aspx

beobachten in diesem Artikel für die Noten aus, wie wenn Sie sie mögen, dass normalerweise fangen, anstatt zu folgen ihrem Rat blockiert die schließlich von der Ausführung und Aussteigen, fügen legacyCorruptedState­­ExceptionsPolicy=true in Ihre Konfigurationsdatei .

+0

Das hat mir sehr geholfen. Vielen Dank. – Newbee

-2

Catch ohne() fängt nicht-CLS-konformen Ausnahmen einschliesslich nativer Ausnahmen.

try 
{ 

} 
catch 
{ 

} 
+0

Versuchte es und funktionierte nicht für mich. – DoronBM

+0

Ich machte meinen Kommentar basierend auf dieser FxCop-Regel .. http://msdn.microsoft.com/en-gb/bb264489.aspx Sorry es hat nicht funktioniert .. – Oscar

Verwandte Themen