【问题标题】:Use of unassigned local variable 'month'使用未分配的局部变量“月”
【发布时间】:2014-02-08 17:35:48
【问题描述】:

在我的代码中使用 catch-try 后出现此错误。当我没有在我的代码中使用 try-catch 时,编辑器不会给出这个错误,但是当我在 try-catch 代码中关闭我的程序时,它开始给出这个错误。我的代码如下所示。

try
{
     month = Int32.Parse(Console.ReadLine());
}
catch (FormatException ee) 
{
     Console.WriteLine(ee.Message);
}
if (month > 12 || mnth < 0)
{
     Console.Write("----Incorrect Month...plz Re-");
     lp_val = 1;
}

【问题讨论】:

  • 按照错误提示将月份替换为 mnth。
  • monthmnth 变量是否不同?或者你只是错过了打字。

标签: c# exception try-catch


【解决方案1】:

问题:你声明了一个变量mnth,但没有初始化它。所以如果用户输入不是一个有效的整数作为输入解析函数抛出异常并且变量mnth仍然没有初始化。

解决方法:在声明时初始化变量mnth

试试这个:

try
{
    mnth=0;
    mnth = Int32.Parse(Console.ReadLine());
}
catch (FormatException ee) 
{
    Console.WriteLine(ee.Message);
}
if (mnth > 12 || mnth < 0)
{
    Console.Write("----Incorrect Month...plz Re-");
    lp_val = 1;
}

您可以将 if 块移动到 try 块内。

try
{
    mnth=0;
    mnth = Int32.Parse(Console.ReadLine());
    if (mnth > 12 || mnth < 0)
    {
        Console.Write("----Incorrect Month...plz Re-");
        lp_val = 1;
    }
}
catch (FormatException ee) 
{
    Console.WriteLine(ee.Message);
}

【讨论】:

  • @PirFahimShah:不客气 :) 很高兴能帮助你。
【解决方案2】:

首先,您有两个变量,monthmnth。看起来这只是通过在此处发布问题而创建的 wan 错误,但如果不是,请确保您解决了代码中的所有拼写错误。

如果Int32.Parse 引发异常,则结果将永远不会分配给month,因此不能保证在稍后评估条件时会分配。

解决办法是在try块外初始化变量:

int month = 0;

或者使用Int32.TryParse而不是将其包装在try/catch中:

int month;
if (!Int32.TryParse(Console.ReadLine(), out month)) 
{
    Console.WriteLine("Unable to parse input");
}

【讨论】:

    【解决方案3】:

    除了你有名为 month 和 mnth 的变量之外,如果 try-block 代码抛出异常,则不会执行该行并且 mnth 不会初始化为任何值。

    【讨论】:

      【解决方案4】:

      看起来你声明了month 变量,但你没有初始化它。

      此代码与您的代码给出相同的错误;

      int month;
      if(month < 12)
      {
         //
      }
      

      这就是为什么您应该在使用它之前对其进行初始化。例如使用;

      int month = 0;
      

      改为

      int month;
      

      【讨论】:

        猜你喜欢
        • 2013-10-18
        • 2015-11-09
        • 2012-05-18
        • 1970-01-01
        • 2023-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多