C # эквивалент библиотеки трассировки Python - PullRequest
2 голосов
/ 17 декабря 2010

В этой записи , python имеет библиотеку трассировки для получения подробной информации об ошибке (номер строки, имя файла ...).

Имеет ли C # аналогичные функции, чтобы узнать, какой файл /номер строки, которая генерирует исключение?

ДОБАВЛЕНО

Я придумал следующий код, основанный на ответах.

using System;

// /3618037/obrabotka-isklychenii-v-c-so-strokoi-peredannoi-konstruktoru

class WeekdayException : Exception {
    public WeekdayException(String wday) : base("Illegal weekday: " + wday) {}
}

class TryCatchFinally 
{
    public static void Main() 
    {
        try
        {
            throw new WeekdayException("thrown by try");
        }
        catch(WeekdayException weekdayException) {
            Console.WriteLine(weekdayException.Message);
            Console.WriteLine(weekdayException.StackTrace);
        }
    }
}

И он дает мне это сообщение:

Illegal weekday: thrown by try
  at TryCatchFinally.Main () [0x00000] in <filename unknown>:0 

Ответы [ 3 ]

4 голосов
/ 17 декабря 2010

Когда вы ловите исключение, вы можете просмотреть его трассировку стека, которая должна дать аналогичные результаты:

catch(Exception e)
{
    Console.WriteLine(e.StackTrace);
}

Если отладочные данные могут быть загружены (если файл .pdb находится в том же каталоге, что и исполняемый файл / вы строите в режиме отладки), это будет включать номера строк имен файлов. Если нет, то будут включены только имена методов.

1 голос
/ 17 декабря 2010

Все классы, которые наследуются от Exception, имеют свойство StackTrace.Это не совсем то же самое, что библиотека Python traceback из-за особенностей работы C # / .NET (как будто она не будет иметь эквивалента tb_lineno)Все это строковое представление трассировки стека.

1 голос
/ 17 декабря 2010

Когда генерируется исключение, проверьте трассировку стека - она ​​даст вам те же результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...