C#, эквивалентный Exception.printStackTrace Java ()?

78
задан Drew Noakes 21 January 2010 в 00:52
поделиться

7 ответов

Попробуйте это:

Console.WriteLine(ex.ToString());

От http://msdn.microsoft.com/en-us/library/system.exception.tostring.aspx :

реализация по умолчанию ToString получает название класса, который выдал текущее исключение, сообщение, результат вызова ToString на внутреннем исключении и результата вызова Среды. StackTrace. Если какой-либо из этих участников является пустым, его значение не включено в возвращаемую строку.

Примечание, что в вышеупомянутом коде вызов к ToString не требуется как, существует перегрузка, которая берет System.Object и вызовы ToString непосредственно.

112
ответ дан Drew Noakes 24 November 2019 в 10:27
поделиться

Я хотел бы добавить: Если Вы хотите распечатать стек за пределами исключения, можно использовать:

Console.WriteLine(System.Environment.StackTrace);
93
ответ дан Ryan Cook 24 November 2019 в 10:27
поделиться

Как Drew говорит, просто преобразовав исключение, строка делает это. Например, эта программа:

using System;

class Test
{
    static void Main()
    {
        try
        {
            ThrowException();
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
        }
    }

    static void ThrowException()
    {

        try
        {
            ThrowException2();
        }
        catch (Exception e)
        {
            throw new Exception("Outer", e);
        }
    }

    static void ThrowException2()
    {
        throw new Exception("Inner");
    }
}

Производит этот вывод:

System.Exception: Outer ---> System.Exception: Inner
   at Test.ThrowException2()
   at Test.ThrowException()
   --- End of inner exception stack trace ---
   at Test.ThrowException()
   at Test.Main()
10
ответ дан Jon Skeet 24 November 2019 в 10:27
поделиться

http://msdn.microsoft.com/en-us/library/system.exception.stacktrace.aspx

Консоль. WriteLine (myException. StackTrace);

2
ответ дан nbevans 24 November 2019 в 10:27
поделиться
  catch (Exception ex)
{
    Console.WriteLine(ex.StackTrace);
}
1
ответ дан Steve Brouillard 24 November 2019 в 10:27
поделиться

Там никакой C# не Регистрирует API, который может взять Исключение в качестве аргумента и обработать все для Вас, как Log4J Java делает?

Т.е. использование Log4NET.

0
ответ дан JeeBee 24 November 2019 в 10:27
поделиться

Также взгляд на Log4Net... это - порт Log4J к.NET.

-1
ответ дан nbevans 24 November 2019 в 10:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: