有没有C#等价于Java的Exception.printStackTrace()
的方法,还是我必须自己编写一些东西,通过InnerExceptions工作?C#相当于Java的Exception.printStackTrace()?
59
A
回答
87
试试这个:
Console.WriteLine(ex.ToString());
从http://msdn.microsoft.com/en-us/library/system.exception.tostring.aspx:
的ToString的默认实现获取抛出当前异常的消息,在调用toString的结果类的名称内部异常,以及调用Environment.StackTrace的结果。如果这些成员中的任何一个为空,则其值不包含在返回的字符串中。
注意,在上面的代码有一个重载需要System.Object
和直接调用ToString
调用ToString
不是必需的。
0
是否没有C#Logging API可以将Exception作为参数并处理所有内容,比如Java的Log4J呢?
即,使用Log4NET。
2
http://msdn.microsoft.com/en-us/library/system.exception.stacktrace.aspx
Console.WriteLine(myException.StackTrace);
+0
这不包括消息或内部异常详细信息。 – 2008-12-02 13:51:17
1
catch (Exception ex)
{
Console.WriteLine(ex.StackTrace);
}
9
正如德鲁所说,只是将异常转换为字符串。举例来说,此程序:
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()
-1
也期待在log4net的...它Log4J的上的端口.NET。
69
我想补充:如果你要打印一个例外之外堆栈,你可以使用:
Console.WriteLine(System.Environment.StackTrace);
相关问题
- 1. C#相当于Java的Thread.setDaemon?
- 2. 相当于Java的C#Action.BeginInvoke
- 3. 相当于Java的C#Rfc2898DerivedBytes
- 4. 相当于Java的Optional.orElse C#
- 5. C++相当于Java的System.arraycopy
- 6. java的cin(C++)相当于
- 7. 相当于C++的Java ByteBuffer?
- 8. C#相当于Java的mkdirs()
- 9. Java相当于C的“ispunct()”
- 10. C#相当于java的Graphics2D
- 11. Java相当于C#代码
- 12. 相当于Java C#Array.Copy
- 13. 相当于java的C/C++ Integer.toHexString
- 14. C或Objective-C相当于Java的Integer.toOctalString()?
- 15. C#相当于Java的同步(abc.class)的
- 16. 相当于C#的DateTime.Now在Java中吗?
- 17. C#出的IntPtr相当于在Java中
- 18. 相当于Java中C语言的__FUNCTION__
- 19. Objective C相当于Java的ArrayList
- 20. Java相当于C#的类型?
- 21. 什么是C#相当于Java的getAndSet
- 22. Java中的C stroull相当于
- 23. C#相当于Java PushbackReader的未读()
- 24. 相当于Java XDoclet的C++工具
- 25. 相当于C++中的Java接口?
- 26. C#相当于Java的FloatBuffer/ShortBuffer?
- 27. Java的setFilterBitmap相当于在Objective-C
- 28. C#中的Java noneMatch()相当于Linq
- 29. 相当于C#
- 30. C#相当于OBJ-C的
很好的问题:) – Epaga 2008-12-02 13:48:34
这是一个很好的问题,但它不是一个很好的答案 – 2008-12-02 13:55:17
我认为它指出了为什么微软可能没有在C#中提供Java这样的功能(是在更简单的时代开发的旧语言)。也就是说,推荐一种更好的方法。 – JeeBee 2008-12-02 13:58:02