残念ながら、MSDN には、 System.Xml.Linq名前空間XDocument
からスローされる例外およびその他の多くの型に関する情報がありません。
しかし、これが保存の実装方法です。
public void Save(string fileName, SaveOptions options)
{
XmlWriterSettings xmlWriterSettings = XNode.GetXmlWriterSettings(options);
if ((declaration != null) && !string.IsNullOrEmpty(declaration.Encoding))
{
try
{
xmlWriterSettings.Encoding =
Encoding.GetEncoding(declaration.Encoding);
}
catch (ArgumentException)
{
}
}
using (XmlWriter writer = XmlWriter.Create(fileName, xmlWriterSettings))
Save(writer);
}
さらに深く掘り下げると、考えられる例外が多数あることがわかります。たとえばXmlWriter.Create
、メソッドは をスローできArgumentNullException
ます。それから、創造XmlWriter
を伴うものをFileStream
創造します。ArgumentException
そして、ここでNotSupportedException
、DirectoryNotFoundException
、SecurityException
、PathTooLongException
などをキャッチできます。
ですから、これらすべてのものを捕まえようとするべきではないと思います。アプリケーション固有の例外で例外をラップし、アプリケーションのより高いレベルにスローすることを検討してください。
public void Write(XDocument outputXml, string outputFilename)
{
try
{
outputXml.Save(outputFilename);
}
catch(Exception e)
{
throw new ReportCreationException(e); // your exception type here
}
}
コードを呼び出すと、キャッチReportCreationException
してログに記録したり、ユーザーに通知したりできます。