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?

¿Fue útil?

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()
  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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top