gpt4 book ai didi

c# - XmlSerializer.Deserialize 方法可以抛出哪些类型的异常?

转载 作者:可可西里 更新时间:2023-11-01 02:59:02 29 4
gpt4 key购买 nike

对于这个方法,XmlSerializer.Deserialize,可能会抛出什么样的异常? XmlExceptionInvalidOperationException?我没有从这个方法中找到任何异常描述信息。我的问题是此方法可能会抛出哪种异常?

http://msdn.microsoft.com/en-us/library/dsh84875.aspx

我正在使用 VSTS2008 + C# + .Net。

提前致谢,乔治

最佳答案

看起来主要是 InvalidOperationException

如果您仔细阅读每个重载的文档,它将为您提供更多详细信息。例如,参见 XmlSerializer.Deserialize Method (XmlReader)

InvalidOperationException 将在其 InnerException 属性中包含有关特定错误的更多详细信息。

编辑:

XmlSerializer.Deserialize Method (XmlSerializationReader)可以抛出一个 NotImplementedException,但它是一个内部 API,不打算由您的代码使用,所以不用担心。

编辑 2:

这段代码:

var ms = new System.IO.MemoryStream();
var deser = new System.Xml.Serialization.XmlSerializer(typeof(string));
deser.Deserialize(ms);

抛出:

System.InvalidOperationException: There is an error in XML document (0, 0). ---
System.Xml.XmlException: Root element is missing.
at System.Xml.XmlTextReaderImpl.Throw(Exception e)
... <snip> ...

所以看起来框架总是会抛出一个InvalidOperationException

真的,除非您担心错误地捕捉到像 ThreadAbortException 这样的异常,否则捕捉所有 异常可能是最安全的...

编辑 3:

使用 Reflector : Deserialize(stream) 方法使用 XmlTextReader 读取流并调用 XmlSerializer.Deserialize Method (XmlReader, String) .该方法在错误时抛出 InvalidOperationException(根据文档)。

编辑 4:

如果 stream 为 null,

Deserialize(stream) 也可以抛出 NullReferenceException,因为它调用了 XmlTextReader(Stream)构造函数。

关于c# - XmlSerializer.Deserialize 方法可以抛出哪些类型的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1326039/

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