具有返回对象T的方法中的try-catch

时间:2016-04-05 07:17:44

标签: c# try-catch

我在c#中有一个方法,它返回一个对象!我需要在这里使用try catch

这是我的方法

public T FromBinary()
{
    T obj;
    try
    {
        using (Stream stream = File.Open(this.serializeFilePath, FileMode.Open))
        {
            var binaryFormatter = new BinaryFormatter();
            obj=(T)binaryFormatter.Deserialize(stream);
        }
    }
    catch (Exception e)
    {
        EventLog.WriteEntry("Cannot convert Binary to object", e.Message + "Trace" + e.StackTrace);
    }
    return obj;
}

但我收到了错误

  

使用未分配的本地变量' obj'。

如何在具有返回对象T的方法中使用try catch?

3 个答案:

答案 0 :(得分:6)

将其更改为T obj = default(T);

答案 1 :(得分:4)

您必须编写T obj = default(T);来为变量分配初始值

答案 2 :(得分:0)

发生此错误是因为您尝试让方法在为对象分配值之前返回该对象(如果代码抛出异常)。

解决方案是将您的声明设置为:

T obj = Default(T);

您还应该将其设为try-catch-finally,以便您始终返回对象并关闭文件流,如下所示:

}//end of catch block
finnally{
stream.Close();
return obj;
}
}//end of method