You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#控制台应用中如何捕获非a/b/c/d输入的错误?

在C#控制台中处理非法输入的两种方式

首先得明确:用户输入数字、w/q/r这类字符本身不会触发系统异常,核心是校验输入合法性;如果业务场景需要用“捕获异常”的方式处理,可以自定义异常来实现。下面是两种常用方案:

方式一:直接校验输入(最常用)

不需要抛出异常,直接判断输入是否在允许范围内,不合法就提示用户重新输入,代码示例:

using System;

class Program
{
    static void Main()
    {
        char validInput;
        do
        {
            Console.WriteLine("请输入a/b/c/d中的一个:");
            // 读取输入并转为小写,兼容大写输入
            string input = Console.ReadLine()?.Trim().ToLower();
            
            // 判断输入是否有效:非空、长度为1,且属于允许的字符集合
            if (!string.IsNullOrEmpty(input) && input.Length == 1 && "abcd".Contains(input[0]))
            {
                validInput = input[0];
                break;
            }
            else
            {
                Console.WriteLine("输入非法!请输入a、b、c、d中的一个。");
            }
        } while (true);

        Console.WriteLine($"你输入了合法字符:{validInput}");
    }
}

方式二:自定义异常并捕获

如果业务逻辑需要用异常来标记非法输入的场景,可以自定义异常类,在校验不通过时抛出并捕获处理:

1. 自定义异常类

public class InvalidAnswerException : Exception
{
    public InvalidAnswerException(string message) : base(message)
    {
    }
}

2. 校验与异常捕获逻辑

using System;

class Program
{
    static void Main()
    {
        try
        {
            Console.WriteLine("请输入a/b/c/d中的一个:");
            string input = Console.ReadLine()?.Trim().ToLower();
            
            if (string.IsNullOrEmpty(input) || input.Length != 1 || !"abcd".Contains(input[0]))
            {
                throw new InvalidAnswerException("输入的字符不在允许范围内,请输入a、b、c、d中的一个。");
            }

            Console.WriteLine($"你输入了合法字符:{input[0]}");
        }
        catch (InvalidAnswerException ex)
        {
            Console.WriteLine($"错误:{ex.Message}");
            // 这里可以添加重试逻辑,比如重新执行输入流程
        }
    }
}

关键点说明

  • 用ToLower()兼容用户输入大写A/B/C/D的情况,提升交互体验
  • 先判断输入是否为空或长度不为1,避免input[0]触发空引用或索引越界异常
  • 批量处理多个问题时,可把校验逻辑封装成单独方法,方便复用

内容的提问来源于stack exchange,提问作者Mr. Skadoosh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 02:50:51