Моя ситуация такова:
- У меня есть форма
FormBase
- От этого
FormBaseList
и FormBaseDetail
наследуются
Теперь в моей основной форме я хочу записать в журнал некоторые исключения из события FirstChanceException.Я регистрирую Exception.Message
и полное stacktrace
Но в stacktrace
у меня есть проблема.
Например, я создаю форму FormCustomerDetail
и ее производную от FormBaseDetail
.
И возникает исключение в защищенном или закрытом методе, определенном в FormBaseDetail
, тогда трассировка стека покажет FormBaseDetail
вместо FormCustomerDetail
Это проблема для меня, потому что теперь я не могу знать, что на самом делеисключение произошло.Из FormBaseDetail
получено около 50 форм. Таким образом, вопрос в том, существует ли в событии FirstChanceException
способ получения имени класса реальной формы?Или Имя?
AppDomain.CurrentDomain.FirstChanceException += CurrentDomain_FirstChanceException;
private void CurrentDomain_FirstChanceException(object sender, System.Runtime.ExceptionServices.FirstChanceExceptionEventArgs e)
{
StackTrace stackTraceObject = new StackTrace();
string stackTrace = stackTraceObject.ToString();
// I need to retrieve the actual form name or classname here...
LogError(
//ActualFormName + Environment.NewLine +
e.Exception.GetType().FullName + Environment.NewLine +
e.Exception.Message + Environment.NewLine +
stackTrace);
}
Пример логентри:
System.FormatException
Cannot convert xx to type boolean...
...
at Test_app.FormBaseDetail.OpenTables()
at Test_app.FormBaseDetail.PrepareFormLoad()
...
Что бы я хотел получить
Exeption occured in FormCustomerDetail
System.FormatException
Cannot convert xx to type boolean...
...
at Test_app.FormBaseDetail.OpenTables()
at Test_app.FormBaseDetail.PrepareFormLoad()
...