在.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