次のように、ストリームとして読み取る必要がある非常に大きな 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;
}
}
}
}
処理の途中で、無効な char 例外が発生します。
' ', hexadecimal value 0x19, is an invalid character. Line 655, position 45.
try-catch 内で return を生成することが許可されていない場合、エラーが発生した場合に、現在の Xml ドキュメントの処理を単純に中止する (および列挙を完了する) 良い方法は何ですか?
try/finally は良くありません - 例外が IEnumerable 全体の処理を中断するからです。
ファイルに対して前処理を実行できません。