西凉董卓 2016-03-01 13:32 采纳率: 100%
浏览 1327
已采纳

C#关于异常的问题,望大虾指教

    public void ShowMune()
    {
        Console.WriteLine("------------------------欢迎使用-----------------------------");
        Console.WriteLine("1.开户\t2.存款\t3.取款\t4.转账\t5.查询余额\t6.退出系统");
        Console.WriteLine("-------------------------------------------------------------");
        Console.WriteLine("请选择操作:");
        try
        {
            int d = int.Parse(Console.ReadLine());

            switch (d)
            {
                case 1:
                    cord();
                    break;
                case 2:
                    break;
                case 3:
                    break;
                case 4:
                    break;
                case 5:
                    break;
                case 6:
                    break;
                default:
                    break;
            }

        }
        catch(FormatException)
        {
           Console.WriteLine("输入有误!请重新输入");

        }
                    我想用多重catch在扑捉一个异常,就是int d = int.Parse(Console.ReadLine());这里我只能输入1-6,其余的数字都不允许输入,如果一旦发现有别的数字输入,就能即使扑捉到这个异常,我找了一下参数,貌似没有特定的参数来捕捉,是不是要在自定义异常才能解决,小可菜鸟一个,望大神指教!
  • 写回答

1条回答 默认 最新

  • threenewbee 2016-03-01 13:38
    关注
     就你这个程序,没必要使用异常,switch判断下就可以。int.Parse在无法解析的时候只会丢出FormatException,不会根据具体为什么没法转换丢出不同的异常。
    你非要做,就得自己定义不同的异常,并且自己判断输入的字符串怎么不对,并且丢出不同的异常,再自己捕获。完全没必要。这里给你一个简单的例子:
    
    class No1to6Ex :Exception
    {
    }
    
    void main()
    {
    try
    {
    int d = int.Parse(Console.ReadLine());
    if (d < 1 || d > 6) throw new No1to6Ex();
    }
    catch (FormatException)
    {
    Console.WriteLine("不是数字");
    }
    catch (No1to6Ex)
    {
    Console.WriteLine("不在范围);
    }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 请专家看看这个问题出在哪里?
  • ¥15 tensorrt 推理 yolov8框出现错误
  • ¥15 用hc 05,做蓝牙控制小车 小车只能说初始遥控方向影响,后续不能更改
  • ¥15 51单片机怎么把每次输入键值保存到数组作为我的确认键的判断条件呢
  • ¥15 c语言字符串单词入门问题报错
  • ¥30 我现在是双非人工智能专业不知道要不要转到软件工程专业
  • ¥15 请问12脉波整流机组的外特性曲线具体是如何推导
  • ¥15 abaqus里的python算法
  • ¥100 如何在思科模拟器中进入CEF模式
  • ¥15 Simulink 仿真如何使用MATLAB function模块获取到仿真过程中某一仿真时刻输入到模块的函数的值?