区分相同类型的异常

时间:2015-12-15 04:38:20

标签: c# .net exception exception-handling

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

AFAIK,您只能通过Exception 来区分同一个Type的两个Message

但是,您不要依靠Message来做出Catch的决定。 Message可能是localized,具体取决于要在其上执行代码的系统的区域设置。如果系统的语言与您硬编码的Catch的语言不同,这将使您的When Message块不相关。

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