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