2009-11-21 59 views

回答

2

使用StackTrace类的构造函数接受Exception

static void ShowExceptionStackTrace(Exception ex) 
{ 
    var stackTrace = new StackTrace(ex, true); 

    foreach (var frame in stackTrace.GetFrames()) 
     Console.WriteLine(frame.GetMethod().Name); 
} 
3

查看System.Diagnostics.StackTrace课程。您可以创建该对象并遍历帧。

StackTrace st = new StackTrace(); 
foreach (var frame in st.GetFrames()) 
{ 
    Console.WriteLine(frame.GetFileName().ToString() 
     + ":" 
     + frame.GetFileLineNumber().ToString()); 
} 
+0

这是一个非常方便的类。如果您想要确定调用您的方法,并且在该方法上定义了任何自定义属性,则需要此类。 – Josh 2009-11-21 21:17:13

+2

以及我发现你可以将一个异常对象传递给StackTrace()的构造函数。所以bassicaly就是这样:) – Karim 2009-11-21 21:19:53

+0

@卡里姆:这是更简单的方法:) – leppie 2009-11-21 21:23:21

1

本质上,如果你想要一个一致的解决方案,你是不走运的。

您可以通过存储stack trace on exception construction来获得大杂烩解决方案。

但是,在引发异常时,框架中没有挂钩。