c# 缺少数据的异常

更新时间:2024-05-09 下载TXT文档 下载Word文档

我想知道丢失数据应该抛出什么样的异常。例如,如果xml节点不包含数据。"抛出新的Exception(...)"将很容易,但是不建议这样做。另一个选择是创建一个新的异常类,例如MissingDataException或InvalidDataException,但是这种情况下没有内置的异常类吗?

  • 当可以返回表明某些数据丢失的函数结果时,为什么引发异常?

根据经验,在派生自己的.NET Framework异常之前,请先检查是否存在要抛出的合适异常。要直接回答您的问题,当前没有可抛出的"丢失数据"异常,但这并不意味着没有适合您情况的异常。

对于您而言,谦虚的InvalidOperationException可能是合适的;当您在对象上调用方法时,抛出此异常,但是对象的状态不适用于该操作。这样的示例包括在封闭流上调用方法以及已通过集合末尾的枚举器。如果XML数据是对象的内部状态,并且方法调用已发现不良数据,则InvalidOperationException是一个很好的候选者。

如果要将XML数据传递给方法,则ArgumentException或其派生方式之一可能是合适的选择。这些异常的种类很少,所有这些异常都表明传递给方法的参数与方法预期的不同。

仅当您希望对异常情况进行与其他异常不同的处理时,才需要创建自定义异常。如果确实选择创建自己的异常,请确保从比Exception更高的异常派生它,以便基类隐含异常的性质。 短码网=DuanMa.NET

  • 1我同意100%,使用系统提供的功能,然后,如果您找不到可以使用的功能,则创建自定义异常。
  • 可能的候选者也将是ValidationException
  • 我必须不同意ValidationException的想法-正如文档所指定的那样,它是System.Activities库的一部分,并且" ...的含义是当Windows Workflow Foundation元素(例如Activity或Workflow)处于无效状态时引发状态"
  • Microsoft文档在此处描述了上述答案:docs.microsoft.com/en-us/dotnet/api/
n
  • 那是System.Data.Entity.dll的一部分,可能会创建不必要的依赖关系。
  • @Stijn当然。这就是为什么我说你可以考虑的原因。

请勿调用"引发新异常",因为您不知道如何处理该异常。

定义您自己的异常。具体来说,例如XMLDataMissingException。然后,您可以向用户发送令人记忆深刻的消息或将其记录。

  • 设置带有详细信息的消息。
  • 不,您真的不应该抛出泛型异常。异常是要处理的,您可能希望以不同的方式处理不同的异常。当您不知道发生异常时该怎么办时,通用异常应该是最后的选择。在这种情况下,我更适合使用SomethingNotFound异常,因为您可能想尝试在处理程序中创建丢失的数据,如果还有其他异常,则可能不想这样做。
n

您可以使用System.Xml.XmlException

Edit:即使System.Xml.XmlException合适,我认为您也应该定义自己的异常,因为它将更加精确,并且您可以描述缺少的数据类型:id,日期等。

  • 运行时使用System.Xml.XmlException来指示读取XML文档时发生错误,特别是在XML格式不正确的情况下(例如,未封闭的标记,缺少根元素)。它甚至包括行号和字符号。感觉不适合我。
  • 如果他的XML在一个节点中有数据,并且没有任何数据,则IMO的XML格式不正确,因此他可以在哪一行显示(如果需要,甚至可以显示哪个字符数)。我认为,即使定义自己的例外情况也比较合适。

以上就是短码网小编为大家整理的《c# 缺少数据的异常》相关内容,希望大家喜欢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若内容造成侵权/违法违规/事实不符,请将联系本站反馈,一经查实,立即处理!

c# 缺少数据的异常》文档下载仅供参考学习,下载后请在24小时内删除。

转载注明出处:https://www.duanma.net/article/40f4db27950.html

回到顶部