【发布时间】:2016-03-20 18:31:21
【问题描述】:
区分两个相同类型但因不同原因引发的异常的最佳方法是什么。
例如,InvalidOperationException 可以在尝试访问空序列时抛出,但也可以在使用 Concurrent 对象时抛出(例如 BlockingCollection)
根据我的阅读,我得出的结论是,使用BlockingCollection.CompleteAdding() 表示完成非常好,因此需要捕获异常并适当处理(例如退出任务)
在不使用消息内容的情况下过滤这些内容的最佳方法是什么?
编辑:它们看起来都具有相同的 HResult 值。
【问题讨论】:
-
你检查过他们的
InnerException吗? -
您可以使用非常特定的范围立即捕获它并重新抛出自定义异常,或者您必须依赖错误消息。尽管 C#6 让这变得不那么糟糕:druss.co/2015/05/c-6-0-exception-filters-try-catch-when
-
@Alex 我会仔细检查是否存在 InnerException。在某些情况下,这可能是一种选择,但这并不是真正的解决方案
-
@Rob 就像我一样。谢谢你的链接,这是个有趣的消息。
-
为什么重要?如果您可以处理产生异常的情况,那么它永远不会被抛出。因此,即使你能区分它们,那又有什么帮助呢?
标签: c# .net exception exception-handling