如何在c ++中捕获运行时错误?

时间:2012-03-31 18:19:57

标签: c++ iostream cin

我遇到的问题是能够处理运行时错误,其中用户键入的数据与预期的数据不同。例如,期望一个整数,但(可能)用户输入一个字符串。在我的控制台程序中,当发生这种情况时,我只是在屏幕上打印了大量垃圾,它进入无限循环。我该如何处理这个问题,以便在发生这种情况时显示错误信息,而不是将整个程序转移到垃圾箱?

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值,它会进入无限循环。我怎样才能解决这个问题

1 个答案:

答案 0 :(得分:2)

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

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

希望这有帮助!