В моем приложении я использую окна сообщения для отображения информации об ошибке.
try
{
// Something...
}
catch (SystemException ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
Это было прекрасно сначала, но поскольку моя программа растет, становится все больше трудным найти блок try-catch, где эта ошибка сгенерирована. Существует ли способ отобразить строку кода или функцию, в которой была сгенерирована ошибка? Я использую Microsoft Visual C# 2008 Express Edition.Спасибо.
Это даст вам МНОГО информации о методе, вызвавшем ошибку (трассировка стека)
MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
Существует Exception.StackTrace
, что часто бывает слишком много для окна сообщения. Также может оказаться полезным Exception.TargetSite.Name
.
вы хотите просмотреть ex.StackTrace (), который предоставит вам полную информацию о местонахождении сгенерированного исключения. Вы также можете проверить InnerException.
Просто отобразите Exception.StackTrace . Он будет содержать всевозможную полезную информацию, которая должна помочь вам найти проблемную строку кода.
Почему бы вам не добавить дополнительную информацию в сообщение об ошибке, чтобы облегчить ее поиск? Вы можете добавить еще текст после строки «Ошибка» в зависимости от того, где создается окно сообщения.
Вызываемое исключение содержит несколько функций, позволяющих получить более подробное объяснение ошибки.
Есть несколько вариантов, которые вам доступны.
Однако я бы предостерегал от этой практики, если вы обнаружив, что вы получаете слишком много и не можете понять, где, я бы начал смотреть на реструктуризацию вашего кода, чтобы убедиться, что у вас нет проблем.