我想知道是否可以將異常中的字符串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