【发布时间】:2014-02-04 19:23:41
【问题描述】:
我在 try...catch 之前声明了一个变量,并在 try 块中分配了它。我不断收到“fileDate”的未分配变量错误。
class Something
{
string fACR = "BAK";
int numbDays = 5;
Public static void Main()
{
DateTime fileDate;
try
{
fACR = args[0];
numbDays = int.Parse(args[2]);
fileDate = DateTime.Parse(args[1]);
}
catch (ArgumentException e)
{
Console.WriteLine("INVALID COMMAND LINE ARGUMENTS! Follow Format:");
Console.WriteLine("<farm_acronym> <yyyy-M-d> <# days>");
Console.WriteLine(e);
}
inFileName = "U:/CANSO/Engineering/Farms/" + fACR +
"/DailyDownloads/";
switch (fACR)
{
case "DEM":
inFileName = inFileName + "Report_Recombiner_" + fileDate.ToString("yyyy-MM-dd") +
".csv";
break;
default:
inFileName = inFileName + "REPORT_Recombiner_" + fileDate.ToString("yyyy-M-d") +
".csv";
break;
}
}
}
我在声明时尝试使用它:
DateTime fileDate = null;
这也不起作用(DateTime 不可为空)。有什么建议吗?
【问题讨论】:
-
如果异常被捕获,你仍然继续。如果解析失败,你想使用
fileDate的什么值?还是您的意思是将return插入到 catch 块中? -
这是我的主要方法。不需要退货。如果不解析,只想抛出异常。
-
您的代码不会抛出异常,它会捕获它。如果您单步执行,您会看到它继续在 catch 块之后运行。您应该在 catch 块的末尾使用
return或throw。
标签: c# scope unassigned-variable