Из компонента AbTest вы должны вернуть экземпляр компонента, например
const AbTest = ({ components, criteriaToMatch }) => {
let ComponentToRender;
components.forEach((component) => {
if (component.criteria === criteriaToMatch) {
ComponentToRender = component.instance;
}
});
return <ComponentToRender />;
};
Это - то, что мы сделали.
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);
}
Вы сортируете отвеченных свой собственный вопрос. Лучший способ предотвратить ошибочное диалоговое окно состоит в том, чтобы написать код, который обрабатывает Ваши исключения, таким образом, диалоговое окно никогда не будет появляться. Я держал бы пари, что это - то, что Raymond Chen предложил бы (если я могу быть настолько полужирным).
http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception.aspx
Хотя, если Вы выпускаете это как коммерческий проект, я поощряю Вас регистрироваться в Microsoft, так, чтобы можно было на самом деле получить дампы катастрофического отказа и информацию о сообщении об ошибке, которая отправляется в MS
Можно попытаться играть с HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AeDebug
Та подсказка является формой дни DrWatson.. май или не может работать.
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
Если вы используете .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, установив флаг совместимости приложения в файле конфигурации приложения.
Это не должно вызывать завершение приложения в случае необработанного исключения и уменьшают вероятность появления этого диалогового окна отчета об ошибках.
Я бы рекомендовал отлавливать только те исключения, которые вы ожидаете и сможете обработать в своем коде, и позволить другим всплыть.
Я бы порекомендовал отлавливать только те исключения, которые вы ожидаете и можете обработать в своем коде, и позволить другим всплыть.
Я бы порекомендовал отлавливать только те исключения, которые вы ожидаете и можете обработать в своем коде, и позволить другим всплыть.