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。