Предотвратите, “Отправляют сообщение об ошибке Microsoft”

Из компонента AbTest вы должны вернуть экземпляр компонента, например

const AbTest = ({ components, criteriaToMatch }) => {
  let ComponentToRender;

  components.forEach((component) => {
    if (component.criteria === criteriaToMatch) {
      ComponentToRender = component.instance;
    }
  });

  return <ComponentToRender />;
};
9
задан GEOCHET 16 February 2009 в 18:28
поделиться

6 ответов

Это - то, что мы сделали.

static void Main() {
    try
    {
        SubMain();
    }
    catch (Exception e)
    {
        HandleUnhandledException(e);
    }
}

private static void SubMain()
{
    // Setup unhandled exception handlers
    AppDomain.CurrentDomain.UnhandledException += // CLR
       new UnhandledExceptionEventHandler(OnUnhandledException);
     Application.ThreadException += // Windows Forms
       new System.Threading.ThreadExceptionEventHandler(
           OnGuiUnhandledException);
     Application.EnableVisualStyles();
     Application.SetCompatibleTextRenderingDefault(false);
     Application.Run(new frmMain());
}

// CLR unhandled exception
private static void OnUnhandledException(Object sender,
   UnhandledExceptionEventArgs e)
{
    HandleUnhandledException(e.ExceptionObject);
}

// Windows Forms unhandled exception
private static void OnGuiUnhandledException(Object sender,
   System.Threading.ThreadExceptionEventArgs e)
{
    HandleUnhandledException(e.Exception);
}
5
ответ дан 4 December 2019 в 22:30
поделиться

Вы сортируете отвеченных свой собственный вопрос. Лучший способ предотвратить ошибочное диалоговое окно состоит в том, чтобы написать код, который обрабатывает Ваши исключения, таким образом, диалоговое окно никогда не будет появляться. Я держал бы пари, что это - то, что Raymond Chen предложил бы (если я могу быть настолько полужирным).

3
ответ дан 4 December 2019 в 22:30
поделиться

http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception.aspx

Хотя, если Вы выпускаете это как коммерческий проект, я поощряю Вас регистрироваться в Microsoft, так, чтобы можно было на самом деле получить дампы катастрофического отказа и информацию о сообщении об ошибке, которая отправляется в MS

1
ответ дан 4 December 2019 в 22:30
поделиться

Можно попытаться играть с HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AeDebug

Та подсказка является формой дни DrWatson.. май или не может работать.

-2
ответ дан 4 December 2019 в 22:30
поделиться

If your question was in regards to a WinForms application then the selected answer will work for you, however it's not exactly elegant.

.NET provides an assistant for this exact scenario:

Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException)
AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf CurrentDomain_UnhandledException

And here's the MSDN Documentation on the method

0
ответ дан 4 December 2019 в 22:30
поделиться

Если вы используете .NET Framework 2.0 или более позднюю версию и существует необработанное исключение из рабочего потока, Я верю, что тебе не повезло. В .NET 1.0 и 1.1 CLR просто проглотил исключение из потока, отличного от основного потока. Однако это было изменено в .NET 2.0, где необработанное исключение в потоке приводит к закрытию приложения.

Вы можете подписаться на AppDomain.CurrentDomain.UnhandledException, чтобы получать уведомления о возникновении таких необработанных исключений, но приложение, скорее всего, закрывается в этот момент, и вам просто дают возможность сделать что-то перед неизбежным, например, войти в систему. исключение где-то и отображение удобного сообщения. UnhandledExceptionEventArgs имеет свойство только для чтения, называемое IsTerminating, которое можно проверить, чтобы увидеть, завершается ли приложение или нет. После завершения работы приложения обычно появляется диалоговое окно отчетов об ошибках Microsoft.

Хотя я бы не рекомендовал это, есть способ вернуться к тому, как ведут себя CLR 1.0 и 1.1, установив флаг совместимости приложения в файле конфигурации приложения.

Это не должно вызывать завершение приложения в случае необработанного исключения и уменьшают вероятность появления этого диалогового окна отчета об ошибках.

Я бы рекомендовал отлавливать только те исключения, которые вы ожидаете и сможете обработать в своем коде, и позволить другим всплыть.

Хотя я бы не рекомендовал это, есть способ вернуться к тому, как ведут себя CLR 1.0 и 1.1, установив флаг совместимости приложения в файле конфигурации приложения.

Это не должно вызывать завершение приложения в случае необработанного исключения и уменьшают вероятность появления этого диалогового окна отчета об ошибках.

Я бы рекомендовал отлавливать только те исключения, которые вы ожидаете и сможете обработать в своем коде, и позволить другим всплыть.

Хотя я бы не рекомендовал это, есть способ вернуться к тому, как ведут себя CLR 1.0 и 1.1, установив флаг совместимости приложения в файле конфигурации приложения.

Это не должно вызывать завершение приложения в случае необработанного исключения и уменьшают вероятность появления этого диалогового окна отчета об ошибках.

Я бы рекомендовал отлавливать только те исключения, которые вы ожидаете и сможете обработать в своем коде, и позволить другим всплыть.

Я бы порекомендовал отлавливать только те исключения, которые вы ожидаете и можете обработать в своем коде, и позволить другим всплыть.

Я бы порекомендовал отлавливать только те исключения, которые вы ожидаете и можете обработать в своем коде, и позволить другим всплыть.

1
ответ дан 4 December 2019 в 22:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: