【问题标题】:How to catch a run-time error in c++?如何在 C++ 中捕获运行时错误?
【发布时间】:2012-04-15 01:15:54
【问题描述】:

我无法处理运行时错误,即用户键入的数据与预期不同。例如,需要一个整数,但(可能)用户输入了一个字符串。在我的控制台程序中,当这种情况发生时,我的屏幕上会打印出一大堆垃圾,它会进入无限循环。我该如何解决这个问题,以便在发生这种情况时显示错误消息,而不是整个程序都被丢弃?

int x = 0;
cout << "\n\nEnter a number(1-9): ";
cin >> x;
if(x<1 || x>9)
{
   cout<<"\nThe place you entered is invalid. Please enter the correct place number";
}else{
   cout<<"Correct";
}

如果我输入的数字大于 2^31(我知道它是 int 数据类型的最大值)或 char 值,它将进入无限循环。我该如何解决这个问题

【问题讨论】:

    标签: c++ iostream cin


    【解决方案1】:

    cin 有点奇怪,因为如果您尝试从用户那里读取数据并且类型错误(例如,当需要 int 时输入字符串)或值非法(例如,太大了),cin 进入“失败状态”,从那时起将拒绝从用户那里读取任何值,直到您明确解决问题。正确地从cin 读取数据以防止这种情况发生有点棘手,但可以通过编写一些不错的帮助例程并在以后的程序中调用它们来简化。

    有关从 cin 正确读取数据的一种方法的描述,您可能需要查看 these course notes from Stanford's CS106L course,其中描述了流在 C++ 中的工作方式以及如何正确读取和写入数据。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2011-02-04
      • 2023-03-08
      • 2020-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-24
      • 1970-01-01
      相关资源
      最近更新 更多