Geo*_*ge2 17 .net c# serialization xml-serialization
对于这种方法,XmlSerializer.Deserialize可能抛出什么样的异常?XmlException?InvalidOperationException?我没有从这个方法中找到任何异常描述信息.我的问题是这种方法可以抛出什么样的异常?
http://msdn.microsoft.com/en-us/library/dsh84875.aspx
我使用的是VSTS2008 + C#+ .Net.
乔治,提前谢谢
Nad*_*zie 20
看起来主要是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);
Run Code Online (Sandbox Code Playgroud)
抛出:
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> ...
Run Code Online (Sandbox Code Playgroud)
所以看起来框架总是会抛出一个InvalidOperationException.
真的,除非你担心错误地捕捉异常,否则你ThreadAbortException可能最安全地捕捉所有异常......
编辑3:
使用Reflector:该Deserialize(stream)方法使用a读取流XmlTextReader并调用XmlSerializer.Deserialize Method (XmlReader, String).该方法会引发InvalidOperationException错误(根据文档).
编辑4:
Deserialize(stream)也可以抛出一个NullReferenceExceptionif stream为null,因为它调用XmlTextReader(Stream)构造函数.
XmlSerializer的例外情况
诊断这些问题的根源一开始可能很棘手,因为XmlSerializer的例外似乎并没有提供关于它们出现原因的大量信息; 至少,他们不会在开发人员通常会看到的地方提供信息.
在大多数情况下,Serialize,Deserialize甚至XmlSerializer构造函数
System.InvalidOperationException在发生错误时抛出相当通用的东西.此异常类型可能出现在.NET Framework中的许多位置; 它根本不是特定于XmlSerializer的.更糟糕的是,异常的Message属性也只产生非常通用的信息.
有关XmlSerializer中的异常的这个和其他非常方便的提示可以在文档疑难解答XmlSerializer的常见问题中找到.
| 归档时间: |
|
| 查看次数: |
19829 次 |
| 最近记录: |