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