Сообщения Об Ошибках 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.
Почему бы вам не добавить дополнительную информацию в сообщение об ошибке, чтобы вы могли найти его более легко? Вы можете добавить еще текст после строки "ошибка" в зависимости от того, где создается окно сообщения.
вызываемое исключение содержит несколько функций, позволяющих получить более подробное объяснение ошибки.
есть несколько вариантов, которые у вас есть в вашем распоряжении.
- Поместите что-то в поле сообщения, если вы хотите дать контекстную информацию
- показать информацию трассировки стека, если на линии сборки отладки будут включены номера
однако я бы предостерег от этой практики, если вы обнаружите, что получаете слишком много, и вы не можете понять, где, я бы начал смотреть на реструктуризацию вашего кода, чтобы убедиться, что у вас нет проблемы.