Gibt es eine C # -Äquivalenzmethode zu Javas Exception.printStackTrace()
oder muss ich selbst etwas schreiben und mich durch die InnerExceptions arbeiten?
Versuche dies:
Console.WriteLine(ex.ToString());
From http://msdn.Microsoft.com/en-us/library/system.exception.tostring.aspx :
Die Standardimplementierung von ToString erhält den Namen der Klasse, die die aktuelle Ausnahme ausgelöst hat, die Nachricht, das Ergebnis des Aufrufs von ToString für die innere Ausnahme und das Ergebnis des Aufrufs von Environment.StackTrace. Wenn eines dieser Elemente null ist, ist sein Wert nicht in der zurückgegebenen Zeichenfolge enthalten.
Beachten Sie, dass im obigen Code der Aufruf von ToString
nicht erforderlich ist, da es eine Überladung gibt, die System.Object
und ruft ToString
direkt auf.
Ich möchte hinzufügen: Wenn Sie den Stapel außerhalb einer Ausnahme drucken möchten, können Sie Folgendes verwenden:
Console.WriteLine(System.Environment.StackTrace);
Wie Drew sagt, wird dies nur durch Konvertieren der Ausnahme eines Strings erreicht. Zum Beispiel dieses Programm:
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");
}
}
Erzeugt diese Ausgabe:
System.Exception: Outer ---> System.Exception: Inner
at Test.ThrowException2()
at Test.ThrowException()
--- End of inner exception stack trace ---
at Test.ThrowException()
at Test.Main()
http://msdn.Microsoft.com/en-us/library/system.exception.stacktrace.aspx
Console.WriteLine (myException.StackTrace);
catch (Exception ex)
{
Console.WriteLine(ex.StackTrace);
}
Gibt es keine C # -Protokollierungs-API, die eine Ausnahme als Argument verwenden und alles für Sie erledigen kann, wie es Javas Log4J tut?
Verwenden Sie also Log4NET.