在.NET中捕捉異常時,可以根據需要使用特定類型的異常塊。但我通常會嘗試擁有至少一個「常規」異常catch塊。但有沒有辦法獲得被泛型異常處理程序捕獲的「真正」異常的類型,也許使用反射?捕捉一般異常時,如何確定原始異常類型?
舉例來說,如果我有
Catch ex As System.ServiceModel.FaultException(Of InvalidUser)
ProcessModuleLoadException(Me, ex)
Catch ex As System.ServiceModel.FaultException(Of SQLExceptions)
ProcessModuleLoadException(Me, ex)
Catch ex As System.ServiceModel.FaultException(Of DataNullReference)
ProcessModuleLoadException(Me, ex)
Catch ex As System.ServiceModel.FaultException
ProcessModuleLoadException(Me, ex)
Catch ex As Exception
ProcessModuleLoadException(Me, ex)
(我讓他們爆發的調試,即使我做每個異常的同樣的事情)。我想檢查「ex」並獲得基本的「真實」類型的異常,或者作爲一種類型(主要是爲了調試,所以我可以添加另一種類型的異常catch塊)或者作爲一個字符串(用於日誌記錄)。
但是,在Catch塊內部,「ex」已經被轉換爲它的父類,因此任何有關原始異常的原始屬性和信息似乎都會丟失。
對此提出建議?
@downvoter:這個(和runrunraygun的)答案有什麼問題? – 2011-02-12 12:57:14