我想知道是否可以将异常中的字符串StackTrace转换为更结构化的数据对象?是否可以从Exception.StackTrace中提取一些结构化信息?
还是有一种方法,可以让我这个信息,而我正在捕捉异常? 也许使用反射的东西?
谢谢!
我想知道是否可以将异常中的字符串StackTrace转换为更结构化的数据对象?是否可以从Exception.StackTrace中提取一些结构化信息?
还是有一种方法,可以让我这个信息,而我正在捕捉异常? 也许使用反射的东西?
谢谢!
使用StackTrace
类的构造函数接受Exception
:
static void ShowExceptionStackTrace(Exception ex)
{
var stackTrace = new StackTrace(ex, true);
foreach (var frame in stackTrace.GetFrames())
Console.WriteLine(frame.GetMethod().Name);
}
查看System.Diagnostics.StackTrace课程。您可以创建该对象并遍历帧。
StackTrace st = new StackTrace();
foreach (var frame in st.GetFrames())
{
Console.WriteLine(frame.GetFileName().ToString()
+ ":"
+ frame.GetFileLineNumber().ToString());
}
本质上,如果你想要一个一致的解决方案,你是不走运的。
您可以通过存储stack trace on exception construction来获得大杂烩解决方案。
但是,在引发异常时,框架中没有挂钩。
这是一个非常方便的类。如果您想要确定调用您的方法,并且在该方法上定义了任何自定义属性,则需要此类。 – Josh 2009-11-21 21:17:13
以及我发现你可以将一个异常对象传递给StackTrace()的构造函数。所以bassicaly就是这样:) – Karim 2009-11-21 21:19:53
@卡里姆:这是更简单的方法:) – leppie 2009-11-21 21:23:21