Новые HandleProcessCorruptedStateExceptions приписывают в.NET 4

Я пытаюсь разрушить свое приложение 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 выдается исключение, но это не 'пузырится' до тех блоков обработчика исключений. При выполнении как автономный (без присоединенного отладчика), я не получаю журнала, несмотря на то, что я ожидаю.

Почему это так, и как сделать код обработки, который будет выполняться?

5
задан Community 23 May 2017 в 12:10
поделиться