C#相当于Java的Exception.printStackTrace()?

有没有Java的Exception.printStackTrace()的C#等价方法,或者我必须自己写一些东西,通过InnerExceptions工作?

尝试这个:

 Console.WriteLine(ex.ToString()); 

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

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

请注意,在上面的代码中,不需要调用ToString因为有一个重载System.Object并直接调用ToString

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

 Console.WriteLine(System.Environment.StackTrace); 

正如德鲁所说,只是将这个exception转换成一个string。 比如这个程序:

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

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

Console.WriteLine(myException.StackTrace);

  catch (Exception ex) { Console.WriteLine(ex.StackTrace); } 

有没有C#日志API,可以采取一个exception作为参数,并为您处理一切,如Java的Log4J呢?

即,使用Log4NET。

另外看看Log4Net …它的Log4J端口到.NET。