区分相同类型的exception

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

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

从我的阅读中我得出结论,使用BlockingCollection.CompleteAdding()来表示完成是完全正常的,因此需要捕获exception并正确处理(例如退出任务)

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

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