2012-05-09 17 views
17

Possiedo un'applicazione di console di codici nativi e misti. Il processo dell'applicazione è terminato a causa dell'errore fatale di Visual C RunTime Library. Anche se sto usando il seguente, il codice gestito non cattura l'eccezione origini:Impossibile rilevare l'eccezione nativa nel codice gestito

  1. blocco try/catch
  2. AppDomain.UnHandledExption += ...
  3. In occasione del RuntimeCompatibilityAttribute(WrapNonExceptionThrows = true) nel file AssmblyInfo.

Cos'altro posso fare?

risposta

21

Le eccezioni native sono state modificate in .NET 4 in modo che non possano essere catturate con un blocco di cattura standard. Devi specificamente contrassegnare la funzione in cui l'eccezione viene lanciata come [HandleProcessCorruptedStateExceptions] per essere in grado di catturarla.

più qui, http://msdn.microsoft.com/en-us/magazine/dd419661.aspx

Attenzione per le note in tale articolo, come se si desidera per la cattura di loro normalmente piuttosto che seguire i loro consigli di eseguire il blocco finally e uscendo, aggiungere legacyCorruptedState­­ExceptionsPolicy=true nel file di configurazione .

+0

Questo mi ha aiutato molto. Grazie mille. – Newbee

-2

Catch without() rileverà eccezioni compatibili con CLS incluse le eccezioni native.

try 
{ 

} 
catch 
{ 

} 
+0

Provato e non ha funzionato per me. – DoronBM

+0

Ho fatto il mio commento basato su questa regola FxCop .. http://msdn.microsoft.com/en-gb/bb264489.aspx Spiacente, non ha funzionato .. – Oscar

Problemi correlati