区分相同类型的异常

gal*_*13x 5 .net c# exception-handling exception

区分同一类型的两个异常但出于不同原因抛出的最佳方法是什么.

例如,InvalidOperationException可以抛出尝试访问空序列,但也可以在使用Concurrent对象时抛出(例如BlockingCollection)

从我的阅读中我得出结论,使用BlockingCollection.CompleteAdding()信号完成是完全正常的,因此需要捕获异常并适当处理(例如退出任务)

在不使用消息内容的情况下过滤这些内容的最佳方法是什么?

编辑:它们似乎都具有相同的HResult值.

Moh*_*din 1

AFAIK 您只能通过 来区分两个Exception相同的 s 。Type Message

但是,您应该依赖 来Message做出Catch决定。可能Message会根据您正在执行代码的系统的区域设置配置进行本地化。如果系统的语言与您硬编码Catch When的语言不同,这将使您的块不相关。Message

唯一可以使用它的情况Message是当您是系统管理员并为您将管理的服务器编写软件并且您确定您使用的语言将来不会改变(当您编写时无法保证)在客户端设备上运行的软件)。