小编Chr*_*ubb的帖子

当受凉一般例外,我怎么能确定原来的异常类型?

当捕获.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)
Run Code Online (Sandbox Code Playgroud)

(我已经打破了他们的调试,即使我做每个异常的同样的事情).

总之,在"抓住EX作为System.ServiceModel.FaultException"我要检查"EX",并获得基地"真正的"类型的异常,无论是作为一个类型(主要用于调试,所以我可以添加其他的catch块)或作为字符串(用于记录).

但是,在Catch块中,"ex"已经被强制转换为它的父类,因此任何原始属性和有关原始异常的信息似乎都会丢失.

建议?

vb.net reflection exception-handling exception try-catch

6
推荐指数
1
解决办法
2万
查看次数