首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

try_catch_throw 与return 的合用 有关问题

2012-05-16 
try_catch_throw 与return 的合用 问题!下面一段代码,我想返回string[]...但是当我在catch中什么也不做的

try_catch_throw 与return 的合用 问题!
下面一段代码,我想返回string[]...但是当我在catch中什么也不做的时候,报错:use of unassigned local variable 'result' ;当我在catch中加入 throw 就可以,,而且只能是throw,其他的不行,,这是什么原理?请分析。谢谢!


 public virtual string[] DxfReadPairs(string fileName)
  {
  StreamReader sr = null;
  string[] result;
  try
  {
  sr = new StreamReader(fileName, Encoding.Default);
  result =new string[] { sr.ReadLine().Trim(),sr.ReadLine().Trim() };
  }
  catch(Exception)
  {
  throw;
  }
  finally
  {
  if (sr != null)
  {
  sr.Close();
  }
  }
  return result;
  }

[解决办法]
string[] result = null;
进行初始化,否则认为没有赋值
[解决办法]
2楼正解。或者在返回之前在try-catch之外赋值。
[解决办法]
c#编译器比较优雅,它可以检测出你试图不正确返回string[]类型结果的请况。
[解决办法]
http://msdn.microsoft.com/zh-cn/library/0yd65esw.aspx
这上面有讲。
static void Main() 
{
int n;
try 
{
// Do not initialize this variable here.
n = 123;
}
catch
{
}
// Error: Use of unassigned local variable 'n'.
Console.Write(n);
}

[解决办法]
把return result;放到try后的大括号里也可以
 
[解决办法]
报错是因为进入catch了之后,方法没有 return 语句,没返回值,
用了throw 之后,就是将异常抛出到此方法外面了,此方法异常了,也就不需要返回值了。
[解决办法]
需要初始化result = null

热点排行