今回は、LINQ to XMLにてエラーが発生した場合にthrowされる例外について.
過去の内容は以下から見れます。よろしければご参照くださいませ。
LINQ to XMLは内部でXmlReaderを利用しているので
エラーが発生した場合、XmlExceptionが発生します。
以下、サンプルです。
#region LinqSamples-55 /// <summary> /// LINQ to XMLのサンプルです。 /// </summary> /// <remarks> /// LINQ to XMLにてエラー発生時XmlExceptionが発生することを確認するサンプルです。 /// </remarks> public class LinqSamples55 : IExecutable { public void Execute() { try { // // LINQ to XMLは内部でXmlReaderを利用している. // なので、エラーが発生した場合、XmlReaderの場合と // 同様にXmlExceptionが発生する. // XElement.Parse(GetXmlStrings()); } catch(XmlException xmlEx) { Console.WriteLine(xmlEx.ToString()); } } string GetXmlStrings() { // // わざと解析エラーになるXML文字列を作成. // return @"<data> <id>1</id> <id>2</id> </dat>"; } } #endregion
実行結果は以下のようになります。
System.Xml.XmlException: 行 1、位置 2 にある開始タグ 'data' と終了タグ 'dat' が対応していません。 行 4、位置 18。 場所 System.Xml.XmlTextReaderImpl.Throw(Exception e) 場所 System.Xml.XmlTextReaderImpl.Throw(String res, String[] args) 場所 System.Xml.XmlTextReaderImpl.ThrowTagMismatch(NodeData startTag) 場所 System.Xml.XmlTextReaderImpl.ParseEndElement() 場所 System.Xml.XmlTextReaderImpl.ParseElementContent() 場所 System.Xml.XmlTextReaderImpl.Read() 場所 System.Xml.Linq.XContainer.ReadContentFrom(XmlReader r) 場所 System.Xml.Linq.XContainer.ReadContentFrom(XmlReader r, LoadOptions o) 場所 System.Xml.Linq.XElement.ReadElementFrom(XmlReader r, LoadOptions o) 場所 System.Xml.Linq.XElement.Load(XmlReader reader, LoadOptions options) 場所 System.Xml.Linq.XElement.Parse(String text, LoadOptions options) 場所 Gsf.Samples.LinqSamples55.Execute()
以下、参照リソースです。
================================
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場