如果函数体中发生异常,如何返回新的空类型 T?
如果在反序列化 xml 时出现问题,将 x 转换为新 T() 的最佳方法是什么?
看看我是如何得到 catch 块的,我将如何处理这个?
public static T DeserializeXml<T>(this string xml) where T : class
{
XmlDocument doc = new XmlDocument();
MemoryStream ms = new MemoryStream();
StreamReader sr = null;
T x = null;
//
try
{
doc.LoadXml(xml); doc.Save(ms);
ms.Position = 0;
sr = new StreamReader(ms);
XmlSerializer i = new XmlSerializer(typeof(T));
x = (T)i.Deserialize(sr);
}
catch (Exception) {
x = null;
}
finally {
sr.Close(); sr.Dispose(); ms.Close(); ms.Dispose();
}
//
return x as T;
}