我正在读取一个非常大的 XML 文件,我必须将其作为流读取,如下所示:
public IEnumerable<something> GetStuff()
{
foreach(var gzipStream in GetGZips())
{
using (var reader = XmlReader.Create(gzipStream, new XmlReaderSettings{ CheckCharacters = false }))
{
reader.MoveToContent();
while (reader.Read()) //<-- Exception here
{
//Do stuff
yield return something;
}
}
}
}
在处理过程中,我得到了一个无效的字符异常:
' ', hexadecimal value 0x19, is an invalid character. Line 655, position 45.
鉴于不允许在 try-catch 中产生 return - 在发生错误的情况下,有什么好方法可以简单地中止当前 Xml 文档的处理(并完成枚举)?
try/finally 不好 - 因为异常会破坏整个 IEnumerable 的处理。
我无法对文件执行任何预处理。