区分相同类型的异常

问题描述 投票:6回答:1

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

例如,尝试访问空序列时可能会抛出InvalidOperationException,但在使用并发对象(例如BlockingCollection)时也会抛出该错误

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

无需使用消息内容来过滤这些内容的最佳方法是什么?

Edit:它们看起来都具有相同的HResult值。

c# .net exception exception-handling
1个回答
0
投票

AFAIK,您可以区分相同Exception的两个Type 仅通过Message

但是],您应该不是依靠Message做出Catch决定。根据正在执行代码的系统的区域设置,Message可能是localized。如果系统的语言与您硬编码的Catch的语言不同,这将使When Message块不相关。

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

© www.soinside.com 2019 - 2024. All rights reserved.