2012-05-09 2 views
17

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

  1. Try блок/поймать
  2. AppDomain.UnHandledExption += ...
  3. надписав RuntimeCompatibilityAttribute(WrapNonExceptionThrows = true) в файле AssmblyInfo.

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

ответ

21

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

Больше здесь, http://msdn.microsoft.com/en-us/magazine/dd419661.aspx

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

+0

Это очень помогло мне. Большое спасибо. – Newbee

-2

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

try 
{ 

} 
catch 
{ 

} 
+0

Пробовал и не работал для меня. – DoronBM

+0

Я сделал свой комментарий на основе этого правила FxCop. http://msdn.microsoft.com/en-gb/bb264489.aspx Жаль, что это не сработало. – Oscar

Смежные вопросы