Сообщения Об Ошибках C# MessageBox

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

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

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

6 ответов


Это даст вам много информации о методе, который вызвал ошибку (stacktrace)

MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

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


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


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


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

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


есть несколько вариантов, которые у вас есть в вашем распоряжении.

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

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