C# GetAttribute()不';不要抛出异常

C# GetAttribute()不';不要抛出异常,c#,.net,xml,C#,.net,Xml,如果找不到属性,为什么System.Xml.XmlReader.GetAttribute(String)不抛出异常?!乍一看,这似乎既荒谬又危险。因为找不到指定属性并没有什么“例外”。如果它是可选的呢?然后,您会依赖抛出的异常来控制程序流吗 这不是一个好的做法-在使用它之前,您应该简单地检查返回值是否为null。因为没有找到指定的属性没有什么“例外”。如果它是可选的呢?然后,您会依赖抛出的异常来控制程序流吗 这不是一个好的做法-在使用它之前,您应该简单地检查返回值是否为null。异常不应该用于控

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

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

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

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


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

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

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

+1-没错……异常不应用于测试条件,那么XmlReader呢。例如ReadElementContentAsString(字符串,字符串)?在这种情况下,它抛出异常。或者元素不能是可选的,不像属性?顺便说一句,我当然不会在测试条件中使用异常。我的所有属性都是必需的。我认为这是比可选属性更频繁的情况“我的所有属性都是必需的。我认为这是比可选属性更频繁的情况”。我认为你错了。也许我们俩都没有任何定量数据作为证据。好吧,我错了。我认为XmlReader有类似于boolHasAttribute(字符串名称)的东西来确定属性的存在。如果没有GetAttribute()中的null方法-这是唯一的选项)+1-正确的…异常不应该用于测试条件,那么XmlReader呢。例如ReadElementContentAsString(string,string)呢?在这种情况下,它抛出异常。或者元素不能是可选的,不像属性?顺便说一句,我当然不会在测试条件中使用异常。我的所有属性都是必需的。我认为这是比可选属性更频繁的情况“我的所有属性都是必需的。我认为这是比可选属性更频繁的情况”。我认为你错了。也许我们俩都没有任何定量数据作为证据。好吧,我错了。我认为XmlReader有类似于boolHasAttribute(字符串名称)的东西来确定属性的存在。如果没有GetAttribute()中的null方法,则为空(这是唯一的选项)