Как определить проблему, когда программа отказывает, не показывая ошибку?

Добавьте flex-grow: 1 и flex-shrink: 0 к вашему h2. Это предотвратит сокращение h2. Кроме того, поскольку вы ограничиваете относительный максимум, который может вырасти h2 (40%), он все равно сломается.

РЕДАКТИРОВАТЬ:

Flex-Grow / Shrink отсутствовал в .container>div. Добавьте правило flex: 1 1 авто; поэтому они расширяются равномерно, чтобы заполнить всю ширину.

.container {
  background: grey;
  display: flex;
}

.container>div {
  align-items: center;
  display: flex;
  flex: 1 1 auto;
}

h2 {
  flex: 1 0 40%;
  white-space: nowrap:
  /*flex-basis: 40%;*/
}

p {
  flex-basis: 60%;
}
<div class="container">
  <div>
    <h2>This Is Title A</h2>
    <p>Content.</p>
  </div>
  <div>
    <h2>This Is Title B</h2>
    <p>Content.</p>
  </div>
</div>

9
задан Josh 28 April 2009 в 14:24
поделиться

6 ответов

  1. Вы можете добавить try / catch / finally создайте вокруг вашего метода входа Main () .

  2. Для WinForms вы можете добавить обработчик ThreadException непосредственно перед Application.Run (), чтобы перехватывать исключения, генерируемые в обработчиках событий пользовательского интерфейса WinForms:

     Application.ThreadException + =
     новый ThreadExceptionEventHandler (Application_ThreadException);
    
  3. Все другие необработанные исключения можно перехватить с помощью:

     AppDomain.CurrentDomain.UnhandledException + =
     новый UnhandledExceptionEventHandler (CurrentDomain_UnhandledException);
    

    Но стоит упомянуть, что это позволяет вам только регистрировать / сообщать об исключении - вы не можете предотвратить закрытие приложения после выхода из этого окончательного обработчика.

  4. Visual Studio также может быть настроен на разрыв при первом случае исключения и внешние отладчики (например, WinDbg с управляемыми расширениями SoS) также могут перехватывать исключения первого шанса ( http://www.codeproject.com/KB/debug/windbg_part1.aspx ). 1218] Кроме того, используйте каркас журналирования, такой как log4net, чтобы добавить полезное ведение журнала в ваше приложение и сбросить информацию об исключениях до закрытия приложения.

14
ответ дан 4 December 2019 в 11:08
поделиться

Спросите своих пользователей, могут ли они воспроизвести ошибку и как. Если вы можете воспроизвести ошибку, запустите отладку в Visual Studio и следуйте инструкциям, чтобы вызвать сбой. Visual Studio перейдет в режим отладки, где она поймает ошибку. Форма там вы сможете следить за трассировкой стека и посмотреть, какой код вызывает ошибку. Visual studio большую часть времени делает отладку довольно простой.

2
ответ дан 4 December 2019 в 11:08
поделиться

Ошибки «отправить / не отправить», как правило, возникают, когда у вас есть необработанное исключение в фоновом потоке (основной поток покажет, что продолжить / выйти из диалогового окна .NET с трассировкой стека) ).

Добавьте обработчик исключений в функцию вашего потока и войдите оттуда:

void RunMyThread()
{
    try
    {
        // background thread code
    }
    catch (Exception ex)
    {
        // Log the exception
    }
}

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

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

В идеале вы должны использовать библиотеку журналов, такую ​​как nLog или log4net , чтобы регистрировать любые необработанные исключения и исключения в целом, регистрируя их в своем коде при их возникновении.

Это также может помочь в создании разных уровней регистрации в вашем приложении, чтобы помочь вам отследить проблему, когда она не запущена на вашей машине разработки. С помощью nLog вы можете оставить запись в рабочем коде и включить / отключить вывод журнала с помощью файла конфигурации регистрации.

Я не использовал log4net, поэтому не знаю, имеет ли он подобную функцию.

2
ответ дан 4 December 2019 в 11:08
поделиться

Если это происходит на сайте клиента и не может быть легко воспроизведено в отладчике разработчика, вы можете выполнить некоторую посмертную отладку. Мне нравится использовать Userdump для сбора файла дампа памяти (.DMP). Затем я использую windbg для анализа.

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

Используйте WinDBG для устранения проблемы. Вы можете отключить его (как при остановке на точке останова) при возникновении исключения, а затем исследовать трассировку стека ... объекты в области видимости и т. Д.

0
ответ дан 4 December 2019 в 11:08
поделиться
Другие вопросы по тегам:

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