c# - 如何使用 switch case 处理异常

标签 c#

正在处理一个项目,这里是 c# 的新手,我正在尝试处理未处理的异常。我想做的是,每当用户输入的内容不是其中一种选择时,就向他们提供一条有用的错误消息,并不断提示他们,直到他们输入有效的回复。

        string input = Console.ReadLine();
    //    bool userBool = false;
    //    while( userBool){
           
    //    }
    
        switch (Int32.Parse(input))
        {
            
            case 1:
                farm.AddGrazingField(new GrazingField());
                Console.WriteLine("Your Facility has been added");
                break;
            case 2:
                farm.AddPlowedField(new PlowedField());
                Console.WriteLine("Your Facility has been added");
                break;
            case 3:
                farm.AddNaturalField(new NaturalField());
                Console.WriteLine("Your Facility has been added");
                break;
            case 4:
                farm.AddChickenHouse(new ChickenHouse());
                Console.WriteLine("Your Facility has been added");
                break;
            case 5:
                farm.AddDuckHouse(new DuckHouse());
                Console.WriteLine("Your Facility has been added");
                break;
            default:
                break;
        }

我知道我可以使用 while 循环和条件来做到这一点,但还没有成功地使用 switch case 做到这一点。

最佳答案

您可以使用函数来读取和验证用户的输入:

int GetUserInput()
{
    while (true)
    {
        Console.Write("Please enter a number: ");
        var input = Console.ReadLine();
        if (int.TryParse(input, out var value))
            return value;
    }
}

如果用户输入无效值,此函数不会抛出异常。相反,它会再次提示用户。您可以扩展它以限制您允许的输入范围并编写描述性错误消息。

关于c# - 如何使用 switch case 处理异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63135921/

相关文章:

c# - Visual Studio 智能感知搞砸了

c# - 无法将 System.Data.Spatial 添加到我的域类

c# - WPF 将枚举绑定(bind)到可见性

c# - 如何创建或生成 .mlpd 文件以检查 xamarin 分析器中的应用程序性能

c# - 使用 ACL 保护 WCF 配置文件

c# - 如何通过 WPF DataTrigger 在多值转换器中传递多个参数

C# 文件处理 : Create file in directory where executable exists

c# - 带有可移植库的 POST/PUT 请求

c# - 使用相对路径将文件添加到解决方案

c# - Razor 页面 - 尝试在 Razor 页面上实现操作过滤器