Сообщения об ошибках C # MessageBox - PullRequest
6 голосов
/ 07 мая 2010

В моем приложении я использую окна сообщений для отображения информации об ошибке.

try
{
   // Something...
}
catch (SystemException ex)
{
   MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

Сначала это было нормально, но по мере роста моей программы становится все труднее найти блок try-catch, где эта ошибкагенерируется.Есть ли способ отобразить строку кода или функции, в которой была сгенерирована ошибка?Я использую Microsoft Visual C # 2008 Express Edition.Спасибо.

Ответы [ 6 ]

6 голосов
/ 07 мая 2010

Это даст вам МНОГО информации о методе, который вызвал ошибку (отслеживание стека)

MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
1 голос
/ 07 мая 2010

Просто отобразите Exception.StackTrace . Он будет содержать все виды полезной информации, которая должна помочь вам найти оскорбительную строку кода.

0 голосов
/ 07 мая 2010

Есть несколько вариантов, которые у вас есть.

  1. Поместите что-нибудь в окно сообщения, если вы хотите предоставить контекстную информацию
  2. Показать информацию трассировки стека, еслив строке отладочной сборки будут включены номера

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

0 голосов
/ 07 мая 2010

Почему бы вам не добавить дополнительную информацию в сообщение об ошибке, чтобы вам было легче ее найти? Вы можете добавить еще текст после строки «Ошибка» в зависимости от того, где находится окно сообщения.

Выданное исключение содержит несколько функций, позволяющих получить более подробное объяснение ошибки.

0 голосов
/ 07 мая 2010

вы хотите просмотреть ex.StackTrace (), который предоставит вам полную информацию о местоположении сгенерированного исключения. Вы также можете проверить InnerException.

0 голосов
/ 07 мая 2010

Есть Exception.StackTrace, что часто немного для окна сообщения. Также Exception.TargetSite.Name должен быть полезным.

...