【发布时间】:2013-03-21 13:58:34
【问题描述】:
我正在使用XmlReader 类,即只进阅读器。我正在调用的方法将光标作为副作用移动。但是,有时该方法会引发异常,并将光标留在意料之外的地方。我该如何处理?
xml.ReadStartElement("root");
if (xml.IsStartElement("Results"))
{
try
{
results = Results.FromXml(xml);
// if method successful, it reads past the closing tag of the 'Results' element
}
catch
{
results = null;
// I want to manually move the cursor past the closing tag of the 'Results' element.
}
}
示例文档
<root>
<results>
<arbitaryxml/>
</results>*
<signatures>
如果Results.FromXml 方法成功,光标将留在*。但是,如果失败,它可能会留在结果元素内的任何位置。我希望我的 catch 块确保光标前进到 *. (注意。下一个元素并不总是称为“签名”)。
我发现这很难解释。请询问是否需要澄清,我可以举更多例子。
【问题讨论】:
-
我觉得异常通常不应该成为程序预期流程的一部分。它们应该是计划好的,是的,但我觉得你应该做一些检查以防止首先抛出异常。
-
失败的原因是什么?我会解决原因而不是症状。