c# - 如何处理通用返回 T 的异常

标签 c# .net generics exception default

如果函数体中发生异常,我如何返回一个新的空类型 T?

如果反序列化 xml 时出现问题,将 x 转换为新 T() 的最佳方法是什么?

看看我是如何获得 catch block 的,我将如何处理它?<​​/p>

        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;
    }

最佳答案

你可以使用default .

return default(T);

关于c# - 如何处理通用返回 T 的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13061998/

相关文章:

c# - 在 Visual Studio 2017 上安装 Monogame

c# - 从 SQL 获取数据并放入列表

c# - 强签名程序集

c# - 创建一个可以像 XNamespace 类一样实例化的类

javascript - 如何在 typescript 中添加扩展泛型类的构造函数?

c# - 返回实现相同接口(interface)的不同泛型

c# - 保存文件之前从 SaveFileDialog 获取文件夹路径

c# - 在类的字段中动态搜索(每次通过其他字段)

.net - XmlSerializer 替换 xsi :type to node name

java - 混合方法引用和泛型时出现 LambdaConversionException