2009-11-21 97 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來獲得大雜燴解決方案。

但是,在引發異常時,框架中沒有掛鉤。