在.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)
(我已经将它们分解出来进行调试,即使我对每个异常做同样的事情).
简而言之,在“Catch ex As System.ServiceModel.FaultException”中,我想检查“ex”并获取异常的基本“真实”类型,或者作为一种类型(主要用于调试,所以我可以添加另一个catch块)或者作为字符串(用于记录).
但是,在Catch块中,“ex”已经被强制转换为它的父类,因此任何原始属性和有关原始异常的信息似乎都会丢失.
建议?
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。