C# equivalent to Java's Exception.printStackTrace()?

后端 未结 8 1427
刺人心
刺人心 2021-01-31 13:13

Is there a C# equivalent method to Java\'s Exception.printStackTrace() or do I have to write something myself, working my way through the InnerExceptions?

相关标签:
8条回答
  • 2021-01-31 13:56

    Try this:

    Console.WriteLine(ex.ToString());
    

    From http://msdn.microsoft.com/en-us/library/system.exception.tostring.aspx:

    The default implementation of ToString obtains the name of the class that threw the current exception, the message, the result of calling ToString on the inner exception, and the result of calling Environment.StackTrace. If any of these members is null, its value is not included in the returned string.

    Note that in the above code the call to ToString isn't required as there's an overload that takes System.Object and calls ToString directly.

    0 讨论(0)
  • 2021-01-31 13:58

    As Drew says, just converting the exception a string does this. For instance, this 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");
        }
    }
    

    Produces this output:

    System.Exception: Outer ---> System.Exception: Inner
       at Test.ThrowException2()
       at Test.ThrowException()
       --- End of inner exception stack trace ---
       at Test.ThrowException()
       at Test.Main()
    
    0 讨论(0)
提交回复
热议问题