【发布时间】:2018-10-10 03:19:09
【问题描述】:
我有一个星期几的枚举列表,以及一个要求用户输入当前日期的程序(可以是列表中的任何一天)。我需要实现一个 try-catch 以确保用户输入一个有效的日期,但我遇到了一些困惑。
当我搜索如何使用枚举处理异常时,大多数网站建议使用 TryParse 而不是 try-catch,但是对于这个特定的任务,我需要将它包装在 try-catch 中。我应该使用 catch (OverflowException) 吗?这似乎不起作用,因为我不确定之后会发生什么。我试图在 OverflowException 之后声明一个变量,因为这就是我在 try-catch 示例中看到的;但是,我把它拿出来,因为它给了我错误。到目前为止,我还没有找到与我类似的使用 try-catch 的示例,我可以从中学习。
有人可以看看这个程序并帮助我如何正确地包含一个 try-catch 来处理无效输入吗?如果用户输入星期日到星期六以外的任何内容(包括缩写),我希望控制台说“无效日期”。谢谢!!
class Program
{
static void Main(string[] args)
{
try
{
Console.WriteLine("Please enter the current day of the week.");
string currentday = Console.ReadLine();
Console.WriteLine("Good job. Today is " + currentday);
Console.ReadLine();
}
catch(OverflowException)
{
Console.WriteLine("Not a valid day");
}
Console.ReadLine();
}
public enum days
{
Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
}
【问题讨论】:
-
为什么只测试 OverflowException?
-
您当前的代码永远不会抛出异常。因为您不转换输入。
-
Poul Bak 我不确定还要测试什么。我看到在网上的一个例子中使用了溢出异常,所以我想我应该从那里开始看看发生了什么。我应该将输入转换为枚举吗?
-
嗯,这不是你想要的吗?你当然可以把它保存为字符串,这样就不会出错了。
-
谢谢你,波尔!我太新了,我什至没有意识到转换为枚举是一种选择;我认为它应该只是一个字符串,所以我会像你提到的那样保持它的字符串。