c# - 当我期望相等的两个值不相等时抛出什么异常? (C#)

标签 c# exception error-handling

我觉得这一定是重复的,但我试着环顾四周,但找不到我要找的东西。

我正在使用的示例从解析 XML 文档开始。在此 XML 文档中,人名在两个不同的位置声明。稍后在不同的方法中,我需要使用这个人的名字。我可以在 XML 文档中使用这两个对人名的引用中的任何一个,因为它们是相同的,或者我希望如此。我首先要检查它们是否确实相同。如果出于某种原因它们不相等,我觉得最好抛出异常。当一个人期望相等的两个值实际上不相等时是否有异常(exception)?

我考虑过 ArgumentException ,但我不确定这是否最好,因为它指定:

ArgumentException is thrown when a method is invoked and at least one of the passed arguments does not meet the parameter specification of the called method.

这里不是这种情况,因为参数很好,只是其中一个属性(即人名)的值不是我期望的值。

我想您的第一个问题可能是我为什么要抛出异常。也许这不是最好的选择,但考虑到这两个名称不匹配的原因,我觉得应该这样做,因为当创建 XML 文档时,其中一个名称写入没有正确完成它的工作,我可能会这样做想知道。我没有处理错误的经验,所以这可能并不意味着应该抛出异常。任何建议将不胜感激。

最佳答案

I first want to check that they are indeed the same. If they are not equal for whatever reason, I feel like it would be best to throw an exception.

你可以使用 InvalidOperationException ,因为您的操作期望值相等。如果值不相等,则您的操作无效。

您还可以定义自己的异常。之后您可以根据要比较的情况/对象自定义异常。

关于c# - 当我期望相等的两个值不相等时抛出什么异常? (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38879989/

相关文章:

java - 为什么我运行这个程序时没有弹出一个框架?约格尔

parsing - 我可以让 Bison 使yytname在外部可见吗?

c# - 如何允许对 gridview 进行排序?

c# - 有人有阅读 ISOBUS (ISO 11783-10) 二进制时间日志文件的经验吗?

c# - 检测控制台应用程序何时关闭/终止?

java - 可能通过 Java 异常暴露敏感信息?

c++ - BOOST_NO_EXCEPTIONS 是否保证与 -fno-exceptions 兼容?

c# - 事务 : C# 期间的 MSDTC 异常

c - 如何根据调用的函数使用 errno

c# - 将一个长字符串拆分为一组较短的字符串