c# - 缺失数据异常

标签 c# exception

我想知道应该为丢失数据抛出什么样的异常。例如,如果 xml 节点不包含数据。 “throw new Exception(...)”很容易,但不推荐这样做。另一种选择是创建一个新的异常类,例如 MissingDataExceptionInvalidDataException,但是没有针对这种情况的内置异常类吗?

最佳答案

根据经验,在派生您自己的异常之前,检查现有的 .NET 框架异常是否有合适的异常抛出。要直接回答您的问题,目前没有可抛出的“缺失数据”异常,但这并不意味着没有合适的异常来涵盖您的情况。

在你的情况下,谦虚的InvalidOperationException可能合适;当您在对象上调用方法时抛出此异常,但对象的状态不适合该操作。这方面的示例包括在已关闭的流上调用方法和已通过集合末尾的枚举器。如果 XML 数据是对象的内部状态,并且方法调用发现了错误数据,InvalidOperationException是一个很好的候选人。

如果您将 XML 数据传递给一个方法,一个 ArgumentException ,或其衍生物之一可能是一个合适的选择。这些异常有一小部分,都表明传递给方法的参数与预期的方法不一样。

只有当您希望以不同于其他异常的方式处理异常情况时,您才需要创建自定义异常。如果您确实选择创建自己的异常,请务必从高于 Exception 的异常派生它。 , 因此基类隐含了异常的性质。

关于c# - 缺失数据异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1453200/

相关文章:

silverlight - 10 秒后客户端异步 WCF 调用超时

javascript - 使用 *ngFor 和 ContentChildren 时出现 ExpressionChangedAfterItHasBeenCheckedError

c# - 如何清除 Windows Mobile 8 的 URL 缓存

c# - 线条形状和诡计

c# - 无边框样式的表单

c++ - 关于 C++ 构造函数中异常的混淆

android - 奇怪的异常——java.lang.RuntimeException : mBaselineAlignedChildIndex of LinearLayout set to an index that is out of bounds

java - 自定义运行时异常不打印堆栈跟踪

c# - API 中 POST 模型绑定(bind)问题

c# - 使用 C# 解析复杂的 PDF 文档