Czy istnieje metoda C # równoważna z Javą, Exception.printStackTrace()
czy też muszę napisać coś samodzielnie, przechodząc przez InnerExceptions?
c#
.net
exception
stack-trace
Epaga
źródło
źródło
Chciałbym dodać: Jeśli chcesz wydrukować stos poza wyjątkiem, możesz użyć:
źródło
Jak mówi Drew, wystarczy przekonwertować wyjątek na łańcuch. Na przykład ten program:
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"); } }
Tworzy ten wynik:
źródło
http://msdn.microsoft.com/en-us/library/system.exception.stacktrace.aspx
Console.WriteLine (myException.StackTrace);
źródło
źródło
Czy nie ma interfejsu API C # Logging, który może przyjąć wyjątek jako argument i obsłużyć wszystko za Ciebie, tak jak robi to Java Log4J?
To znaczy użyj Log4NET.
źródło
Ponieważ odpowiedź @ ryan-cook nie zadziałała dla mnie, jeśli chcesz wydrukować ślad stosu bez wyjątku, możesz użyć:
System.Diagnostics.StackTrace stackTrace = new System.Diagnostics.StackTrace(); Console.WriteLine(stackTrace)
Niestety nie można tego zrobić w PCL lub w bibliotece .NETStandard
źródło
Spójrz także na Log4Net ... to port Log4J do .NET.
źródło