Не удается найти собственное исключение в управляемом коде
У меня смешанное приложение консоли .NET и native. Процесс приложения завершается из-за фатальной ошибки библиотеки Visual C RunTime. Несмотря на то, что я использую следующее, управляемый код не захватывает собственное исключение:
- Блок try/catch
-
AppDomain.UnHandledExption += ...
- Пометка
RuntimeCompatibilityAttribute(WrapNonExceptionThrows = true)
в файле AssmblyInfo.
Что еще я могу сделать?
Ответы
Ответ 1
Исходные исключения изменились в .NET 4, так что они не могут быть привязаны к стандартным блокам catch. Вы специально должны отметить функцию, в которой исключение выбрано как [HandleProcessCorruptedStateExceptions]
, чтобы уловить его.
Подробнее здесь http://msdn.microsoft.com/en-us/magazine/dd419661.aspx
Следите за примечаниями в этой статье, например, если вы хотите их нормально поймать, а не следовать их советам по выполнению блока finally и выйти, добавьте legacyCorruptedStateExceptionsPolicy=true
в свой файл конфигурации.
Ответ 2
Catch without() будет захватывать исключения, не совместимые с CLS, включая собственные исключения.
try
{
}
catch
{
}