Thật không may MSDN không có bất kỳ thông tin nào về ngoại lệ được ném bởi XDocument
và nhiều loại khác từ System.Xml.Linq không gian tên.
Nhưng đây là cách tiết kiệm thực hiện:
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);
}
Nếu bạn sẽ đào sâu hơn, bạn sẽ thấy rằng có số lượng lớn các trường hợp ngoại lệ có thể. Ví dụ. Phương pháp XmlWriter.Create
có thể ném ArgumentNullException
. Sau đó, nó tạo ra XmlWriter
liên quan đến việc tạo FileStream
. Và ở đây bạn có thể bắt ArgumentException
, NotSupportedException
, DirectoryNotFoundException
, SecurityException
, PathTooLongException
, vv
Vì vậy, tôi nghĩ rằng bạn không nên cố gắng nắm bắt tất cả các công cụ này. Xem xét để quấn bất kỳ ngoại lệ trong ứng dụng ngoại lệ cụ thể, và ném nó lên mức cao hơn của ứng dụng của bạn:
public void Write(XDocument outputXml, string outputFilename)
{
try
{
outputXml.Save(outputFilename);
}
catch(Exception e)
{
throw new ReportCreationException(e); // your exception type here
}
}
Calling mã có thể bắt chỉ ReportCreationException
và đăng nhập nó, thông báo cho người sử dụng, vv
Nguồn
2013-06-20 13:25:49