Не удается обнаружить собственное исключение в управляемом коде

17

У меня смешанное приложение консоли .NET и native. Процесс приложения завершается из-за фатальной ошибки библиотеки Visual C RunTime. Несмотря на то, что я использую следующее, управляемый код не улавливает собственное исключение:

  1. Блок try / catch
  2. AppDomain.UnHandledExption += ...
  3. Пометка RuntimeCompatibilityAttribute(WrapNonExceptionThrows = true) в файле AssmblyInfo.

Что еще я могу сделать?

    
задан DoronBM 09.05.2012 в 15:32
источник

2 ответа

21

Исходные исключения изменились в .NET 4, так что они не могут быть привязаны к стандартным блокам catch. Вы специально должны отметить функцию, в которой исключение выбрано как [HandleProcessCorruptedStateExceptions] , чтобы уловить его.

Подробнее здесь Ссылка

Следите за комментариями в этой статье, например, если вы хотели бы их нормально поймать, а не следовать их советам по выполнению блока finally и выйти из него, добавьте legacyCorruptedState­­ExceptionsPolicy=true в ваш файл конфигурации.

    
ответ дан M Afifi 09.05.2012 в 15:35
  • Это очень помогло мне. Большое спасибо. –  Newbee 12.12.2013 в 10:47
-2

Catch without () будет захватывать исключения, не совместимые с CLS, включая собственные исключения.

try
{

}
catch
{

}
    
ответ дан Oscar 09.05.2012 в 15:38
  • Пробовал и не работал для меня. –  DoronBM 09.05.2012 в 20:00
  • Я сделал свой комментарий на основе этого правила FxCop .. msdn.microsoft.com/en-gb/bb264489.aspx Извините, но это не сработало. –  Oscar 09.05.2012 в 22:58