2012-02-08 15 views
0

我有一個方法,當拋出異常時被調用。只有Exception.ToString()傳遞給它。目前不可能將參數更改爲接受Exception而不是字符串,因爲我們必須更改大量頁面,並且我無法控制該參數(請勿讓任何人告訴我這樣做) ,因爲相信我,我願意這樣做)。我們已經有了一個處理異常的類,但是我有機會更新這個方法,我想知道是否有可能使用反射或使用HttpContext.Current.Server.GetLastError()來獲取最後的異常。與GetLastError()它不起作用,因爲異常處理。有沒有辦法解決這個問題,也許有反思或什麼?任何幫助是極大的讚賞。如果之前已經討論過這個問題,請給我看看,因爲我找不到類似的問題。使用反射或通過HttpContext.Current.Server.GetLastError()獲取上一個異常

+0

你可以存儲最後一個異常,在會話中清除之前?如果不使用GetLastError(),則無法獲取上一個錯誤。 – 2012-02-08 15:57:34

+0

很遺憾沒有。我想到的另一個解決方案是使用這個http://stackoverflow.com/questions/3810111/exception-and-reflection使用toString()的細節重新創建它 – pqsk 2012-02-08 16:00:59

回答

0

簡單快速的解決方案我用現在(使用一些信息來自Exception and Reflection):

string typeName = err.Substring(0, err.IndexOf(":")); 
string message = err.Length > typeName.Length + 2 ? err.Substring(err.IndexOf(":") + 1) : string.Empty; 
Type type = Type.GetType(typeName); 
ConstructorInfo ctor = type.GetConstructor(new[] { typeof(string) }); 
object exception = ctor.Invoke(new object[] { message }); 

串犯錯是Exception.ToString(),這將有異常的類型,然後我做了消息其餘的tostring方法。這實際上會做。如果我想要非常明確,我可以使用反射來編輯每個屬性,但是在那裏存在錯誤的空間,並且tostring實際上將擁有一切,因爲我創建了異常類型,所以它們都很好。 :)希望這可以幫助別人