Мне нужны два метода, один для получения класса, из которого было вызвано исключение, и другой, который получает номер строки, в которой было вызвано исключение.
Пока у меня есть этот код, который объединяет имя класса и номер строки (пример: DatabaseHandler.cs: строка 70):
private string GetClassAndLine()
{
string tempName = e.GetBaseException().ToString();
int tempPosition = 0;
int length = tempName.Length;
for (int i = 0; i < length; i++)
{
if (tempName.ElementAt(i).Equals('\\'))
{
tempPosition = i + 1;
}
}
return tempName.Substring(tempPosition, length - tempPosition);
}
Так что, если у вас есть идеи, как я могу получить их по отдельности, это было бы здорово Помогите. Затем они передаются в Oracle для хранения любых возникающих исключений.
Обновление 2:
В настоящее время я тестирую этот код, как предлагали некоторые:
private string GetClassName()
{
System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(e, true);
return trace.GetFrame(0).GetMethod().ReflectedType.FullName;
}
private int GetLineNumber()
{
System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(e, true);
return trace.GetFrame(0).GetFileLineNumber();
}
Это то, что было возвращено в конкретном исключении базы данных. Нет номера строки или имени класса, где он был запущен. Как я могу это получить?
Error was found at Class: Oracle.DataAccess.Client.OracleException.
Line Number: 0
Я хочу, например: «Class: Logging.cs, Line: 57»
Спасибо, Райан