C # - Как получить имя класса и номер строки при вызове исключения

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

Пока у меня есть этот код, который объединяет имя класса и номер строки (пример: 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»

Спасибо, Райан

11
задан Ryan S 9 August 2011 в 11:34
поделиться