C# эквивалентно исключению Java.printStackTrace ()?
есть ли эквивалентный метод C# для Java Exception.printStackTrace()
или я должен написать что-то сам, прорабатывая свой путь через InnerExceptions?
7 ответов:
попробуйте это:
Console.WriteLine(ex.ToString());
от http://msdn.microsoft.com/en-us/library/system.exception.tostring.aspx:
реализация по умолчанию ToString получает имя класса, который вызвал текущее исключение, сообщение, результат вызова ToString для внутреннего исключения и результат вызова среды.Трассировка стека. Если какой-либо из этих элементов имеет значение null, его значение не включается в возвращаемое значение строка.
обратите внимание, что в приведенном выше коде вызов
ToString
не требуется, так как есть перегрузка, которая принимаетSystem.Object
и звонкиToString
напрямую.
Я хотел бы добавить: если вы хотите распечатать стек вне исключения, вы можете использовать:
Console.WriteLine(System.Environment.StackTrace);
Как говорит Дрю, просто преобразование исключения строка делает это. Например, эта программа:
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()