Есть ли эквивалентный метод С# для Java Exception.printStackTrace()
или мне нужно что-то написать, работая через InnerExceptions?
С# эквивалентно Java Exception.printStackTrace()?
Ответ 1
Попробуйте следующее:
Console.WriteLine(ex.ToString());
Из http://msdn.microsoft.com/en-us/library/system.exception.tostring.aspx:
Реализация по умолчанию для ToString по умолчанию получает имя класса, которое выбрасывает текущее исключение, сообщение, результат вызова ToString во внутреннем исключении и результат вызова среды .StackTrace. Если какой-либо из этих элементов имеет значение NULL, его значение не включается в возвращаемую строку.
Обратите внимание, что в приведенном выше коде вызов ToString
не требуется, так как есть перегрузка, которая принимает System.Object
и вызывает ToString
напрямую.
Ответ 2
Я хотел бы добавить: если вы хотите распечатать стек вне исключения, вы можете использовать:
Console.WriteLine(System.Environment.StackTrace);
Ответ 3
Как говорит Дрю, просто преобразуя исключение, это делает строка. Например, эта программа:
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()
Ответ 4
http://msdn.microsoft.com/en-us/library/system.exception.stacktrace.aspx
еЫп (myException.StackTrace);
Ответ 5
catch (Exception ex)
{
Console.WriteLine(ex.StackTrace);
}
Ответ 6
Нет ли в С# Logging API, который может принимать исключение в качестве аргумента и обрабатывать все для вас, например, Java Log4J?
I.e., используйте Log4NET.
Ответ 7
Также посмотрите на Log4Net... его порт Log4J на .NET.