有没有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. 相当于Java的C#Rfc2898DerivedBytes
- 2. 相当于C++的Java ByteBuffer?
- 3. C++相当于Java的paintcomponent?
- 4. Java相当于C的“ispunct()”
- 5. 相当于Java的C#Action.BeginInvoke
- 6. C#相当于Java的mkdirs()
- 7. C#相当于java的Graphics2D
- 8. 相当于Java的C++
- 9. C++相当于Java的System.arraycopy
- 10. C#相当于Java的Runtime.getRuntime.exec()
- 11. java的cin(C++)相当于
- 12. 相当于Java C#的typeof()
- 13. C#相当于Java的Thread.setDaemon?
- 14. 相当于Java的Optional.orElse C#
- 15. Java相当于C#DESCrypto
- 16. Java相当于C#system.beep?
- 17. Java相当于C#代码
- 18. C#相当于java Matcher.hitEnd()
- 19. Java相当于C++ multimap
- 20. C#相当于在Java
- 21. C++相当于java StringBuilder.replace
- 22. Java相当于XMLReader C#
- 23. 相当于Java C#Array.Copy
- 24. C或Objective-C相当于Java的Integer.toOctalString()?
- 25. 相当于java的C/C++ Integer.toHexString
- 26. 目标C的JSONObject Java相当于C
- 27. C#相当于Java的KDFCounterBytesGenerator(从BouncyCastle的)
- 28. C#相当于Java的同步(abc.class)的
- 29. 相当于Java的DirectByteBuffer的C#方法
- 30. 的C#相当于Java的通配符
很好的问题:) – Epaga 2008-12-02 13:48:34
这是一个很好的问题,但它不是一个很好的答案 – 2008-12-02 13:55:17
我认为它指出了为什么微软可能没有在C#中提供Java这样的功能(是在更简单的时代开发的旧语言)。也就是说,推荐一种更好的方法。 – JeeBee 2008-12-02 13:58:02