gpt4 book ai didi

c# - XDocument.Load(XmlReader) 可能的异常

转载 作者:可可西里 更新时间:2023-11-01 03:08:03 24 4
gpt4 key购买 nike

调用 XDocument.Load(XmlReader) 时可能抛出哪些异常?当文档未能提供关键信息时,很难遵循最佳实践(即避免使用通用的 try catch block )。

预先感谢您的帮助。

最佳答案

MSDN 说:LINQ to XML 的加载功能建立在 XmlReader 之上。因此,您可能会捕获 XmlReader 抛出的任何异常。创建读取和解析文档的重载方法和 XmlReader 方法。

http://msdn.microsoft.com/en-us/library/756wd7zs.aspxArgumentNullException 和 SecurityException

编辑:MSDN 并不总是正确的。所以我用反射器分析了 Load 方法代码并得到了这样的结果:

public static XDocument Load(XmlReader reader)
{
return Load(reader, LoadOptions.None);
}

Method Load 正在调用方法:

public static XDocument Load(XmlReader reader, LoadOptions options)
{
if (reader == null)
{
throw new ArgumentNullException("reader"); //ArgumentNullException
}
if (reader.ReadState == ReadState.Initial)
{
reader.Read();// Could throw XmlException according to MSDN
}
XDocument document = new XDocument();
if ((options & LoadOptions.SetBaseUri) != LoadOptions.None)
{
string baseURI = reader.BaseURI;
if ((baseURI != null) && (baseURI.Length != 0))
{
document.SetBaseUri(baseURI);
}
}
if ((options & LoadOptions.SetLineInfo) != LoadOptions.None)
{
IXmlLineInfo info = reader as IXmlLineInfo;
if ((info != null) && info.HasLineInfo())
{
document.SetLineInfo(info.LineNumber, info.LinePosition);
}
}
if (reader.NodeType == XmlNodeType.XmlDeclaration)
{
document.Declaration = new XDeclaration(reader);
}
document.ReadContentFrom(reader, options); // InvalidOperationException
if (!reader.EOF)
{
throw new InvalidOperationException(Res.GetString("InvalidOperation_ExpectedEndOfFile")); // InvalidOperationException
}
if (document.Root == null)
{
throw new InvalidOperationException(Res.GetString("InvalidOperation_MissingRoot")); // InvalidOperationException
}
return document;
}

可能有异常的行被注释

我们可以获得下一个异常:ArgumentNullException、XmlException 和 InvalidOperationException。MSDN 说你可能会得到 SecurityException,但也许你会在创建 XmlReader 时得到这种类型的异常。

关于c# - XDocument.Load(XmlReader) 可能的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6904907/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com