Я пытаюсь разрушить свое приложение WPF и получить исключение с помощью вышеупомянутой новой.NET 4 атрибута.
Мне удалось вручную разрушить мое приложение путем вызова Environment.FailFast("crash");
. (Мне также удалось разрушить его с помощью кода Hans от, "Как моделировать поврежденное исключение состояния в.NET 4?".)
Приложение называет вышеупомянутый код катастрофического отказа при нажатии на кнопке. Вот мои обработчики исключений:
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
AppDomain.CurrentDomain.FirstChanceException += CurrentDomain_FirstChanceException;
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
DispatcherUnhandledException += app_DispatcherUnhandledException;
}
[HandleProcessCorruptedStateExceptions]
void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
//log..
}
[HandleProcessCorruptedStateExceptions]
void CurrentDomain_FirstChanceException(object sender, System.Runtime.ExceptionServices.FirstChanceExceptionEventArgs e)
{
//log..
}
[HandleProcessCorruptedStateExceptions]
void app_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
{
//log..
}
//log...
комментарий, показанный выше, только для иллюстрации; там существует реальный код входа.
При выполнении в Visual Studio выдается исключение, но это не 'пузырится' до тех блоков обработчика исключений. При выполнении как автономный (без присоединенного отладчика), я не получаю журнала, несмотря на то, что я ожидаю.
Почему это так, и как сделать код обработки, который будет выполняться?