【问题标题】:XmlReader.GetAttribute() doesn't throw an exceptionXmlReader.GetAttribute() 不会引发异常
【发布时间】:2012-01-26 13:08:44
【问题描述】:

为什么System.Xml.XmlReader.GetAttribute(String)找不到属性不抛出异常?!乍一看似乎很荒谬和危险。

【问题讨论】:

    标签: c# .net xml


    【解决方案1】:

    因为找不到指定属性并没有什么“异常”。如果它是可选的呢?然后你会依赖抛出的异常来控制你的程序流程吗?

    这不是一个好习惯 - 您应该在使用它之前简单地检查返回值是否为 null。

    【讨论】:

    • +1 - 就在...异常不应用于测试条件
    • 那么 XmlReader.ReadElementContentAsString(string, string) 呢?在这种情况下它会抛出异常。或者元素不能像属性那样是可选的?
    • 顺便说一句,我当然不会使用异常来测试条件。我的所有属性都是必需的。我认为这是比可选属性更常见的情况
    • “我的所有属性都是必需的。我认为这种情况比可选属性更常见”。我认为你错了。可能我们俩都没有任何定量数据可用作证据。
    • 好吧,我错了。我认为 XmlReader 有类似 bool HasAttribute(string name) 来确定属性的存在。如果没有 GetAttribute() 中的这种方法 null - 这是唯一的选择)
    【解决方案2】:

    异常不应用于控制流。正如 Chris McAtackney 所说,如果属性是可选的呢?当由于缺少属性而捕获异常时,对控制流使用异常会增加开销。只检查空字符串会更好更高效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多