.NET で XML のテストを行ったところ、多くの有効な名前文字が許可されていないことがわかりました。ほとんどの場合、一見有効な文字に対して XmlException が発生します。
System.Xml.dll から XmlException がスローされ、次のスタック トレースが表示されます。
System.Xml.XmlConvert.VerifyNCName(String name, ExceptionType exceptionType) で System.Xml.Linq.XName..ctor(XNamespace ns, String localName) で System.Xml.Linq.XNamespace.GetName(String localName) で System. Xml.Linq.XName.Get(文字列の拡張名)
ただし、名前が「{」文字 (16 進値 0x7B) で始まる場合、代わりに System.Xml.Linq.dll から ArgumentException が発生し、次のスタック トレースが表示されます。
System.Xml.Linq.XName.Get (文字列のexpandedName) で
奇妙なことに、これは "{" が名前の最初の文字である場合にのみ適用されます。名前の後ろにある場合は、他のすべての「無効な」文字と同じ例外とスタック トレースが表示されます。
私はこれらの例外を具体的にキャッチしてラップして独自の例外をスローしようとしているので、それらがすべて同じ例外をスローすることを望んでいました (当然のことながら、私はそう思います)。
XmlException ではなく ArgumentException がスローされるのはなぜですか?