C # equivalente a Exception.printStackTrace () de Java?
-
22-07-2019 - |
Pregunta
¿Existe un método equivalente en C # para Exception.printStackTrace ()
de Java o tengo que escribir algo yo mismo, abriéndome camino a través de InnerExceptions?
Solución
Prueba esto:
Console.WriteLine(ex.ToString());
De http://msdn.microsoft.com/en -us / library / system.exception.tostring.aspx :
La implementación predeterminada de ToString obtiene el nombre de la clase que arrojó la excepción actual, el mensaje, el resultado de llamar a ToString en la excepción interna y el resultado de llamar a Environment.StackTrace. Si alguno de estos miembros es nulo, su valor no se incluye en la cadena devuelta.
Tenga en cuenta que en el código anterior no se requiere la llamada a ToString
ya que hay una sobrecarga que toma System.Object
y llama a ToString
directamente.
Otros consejos
Me gustaría agregar: si desea imprimir la pila fuera de una excepción, puede usar:
Console.WriteLine(System.Environment.StackTrace);
Como dice Drew, solo convirtiendo la excepción una cadena hace esto. Por ejemplo, este programa:
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");
}
}
Produce esta salida:
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);
}
¿No hay una API de registro de C # que pueda tomar una excepción como argumento y manejar todo por usted, como lo hace Log4J de Java?
Es decir, use Log4NET.
También mira Log4Net ... es un puerto de Log4J a .NET.