我在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?
答案 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