当前位置:  开发笔记 > 编程语言 > 正文

C#等同于Java的Exception.printStackTrace()?

如何解决《C#等同于Java的Exception.printStackTrace()?》经验,为你挑选了3个好方法。

是否有一个与Java相同的C#方法,Exception.printStackTrace()或者我是否必须自己编写一些东西,通过InnerExceptions工作?



1> Drew Noakes..:

试试这个:

Console.WriteLine(ex.ToString());

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

ToString的默认实现获取抛出当前异常的类的名称,消息,在内部异常上调用ToString的结果,以及调用Environment.StackTrace的结果.如果这些成员中的任何一个为null,则其值不包含在返回的字符串中.

请注意,在上面的代码中,ToString不需要调用,因为存在直接接受System.Object和调用的重载ToString.



2> Ryan Cook..:

我想补充一点:如果要在异常之外打印堆栈,可以使用:

Console.WriteLine(System.Environment.StackTrace);



3> Jon Skeet..:

正如Drew所说,只需将字符串转换为字符串即可.例如,这个程序:

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");
    }
}

生成此输出:

System.Exception: Outer ---> System.Exception: Inner
   at Test.ThrowException2()
   at Test.ThrowException()
   --- End of inner exception stack trace ---
   at Test.ThrowException()
   at Test.Main()

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有