区分相同类型但由于不同原因而抛出的两个异常的最佳方法是什么?
例如,尝试访问空序列时可能会抛出InvalidOperationException
,但在使用并发对象(例如BlockingCollection
)时也会抛出该错误
从我的阅读中,我得出的结论是,使用BlockingCollection.CompleteAdding()
表示完成非常好,因此,需要捕获Exception并进行适当处理(例如退出任务)
无需使用消息内容来过滤这些内容的最佳方法是什么?
Edit:它们看起来都具有相同的HResult值。
AFAIK,您可以区分相同Exception
的两个Type
仅通过Message
。
但是],您应该不是依靠Message
做出Catch
决定。根据正在执行代码的系统的区域设置,Message
可能是localized。如果系统的语言与您硬编码的Catch
的语言不同,这将使When
Message
块不相关。
唯一可以使用Message
的情况是,当您是系统管理员并为要管理的服务器编写软件时,请确保所使用的语言将来不会更改(不能更改)。当您编写要在客户端设备上运行的软件时,可以保证)。