是否有一个与Java相同的C#方法,Exception.printStackTrace()
或者我是否必须自己编写一些东西,通过InnerExceptions工作?
试试这个:
Console.WriteLine(ex.ToString());
来自http://msdn.microsoft.com/en-us/library/system.exception.tostring.aspx:
ToString的默认实现获取抛出当前异常的类的名称,消息,在内部异常上调用ToString的结果,以及调用Environment.StackTrace的结果.如果这些成员中的任何一个为null,则其值不包含在返回的字符串中.
请注意,在上面的代码中,ToString
不需要调用,因为存在直接接受System.Object
和调用的重载ToString
.
我想补充一点:如果要在异常之外打印堆栈,可以使用:
Console.WriteLine(System.Environment.StackTrace);
正如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()