我有一个程序需要用户输入一个整数,然后必须满足几个条件。当我运行程序时,如果我输入一个int
数字它可以工作,但如果我输入一个字符,程序只会发送错误消息。我认为异常处理可能在这里工作,但我不知道该怎么做。帮帮伙计们!
这是我编的一部分:
#include <iostream.h>
#include <conio.h>
int i, j, data;
void main()
{
int tempdata;
retry:
cout<<"\n\n Enter the row and coloumn where you want to enter data" <<endl;
cin>>i>>j;
if (i>=1 && i<=9 && j>=1 && j<=9)
{
cout<<"\n Enter your desired value to put in that place"<<endl;
cin>>tempdata;
if(tempdata>=1 && tempdata<=9)
{
data=tempdata;
}
else
{
cout<<"\n Soduku contains numbers from 1 to 9 only.Please try again"<<endl;
goto retry;
}
}
else
{
cout<<"\nEntered row or coloumn is not valid"<<endl;
cout<<"Please try again"<<endl;
goto retry;
}
getch();
}
您确实应该使用异常处理而不是 cout。
if(tempdata>=1 && tempdata<=9)
{
data=tempdata;
}
else
{
throw std::runtime_error("Soduku contains numbers from 1 to 9 only.Please try again");
}
通过将所有这些放入一个函数中,而不是你的主函数中,然后你可以在 try/catch 块中调用这个函数,并正确处理异常:如果你有一个 GUI,则显示一个弹出消息,忽略输入等. 重要的是,如果你忽略它,它实际上并没有被忽略。它被处理。这使您的代码更清洁和可维护。例子:
try
{
input();
}
catch(std::runtime_error& e)
{
// deal with your invalid input here
}
此外,goto 语句被认为是不好的做法。它们可以很容易地用 if/else 或 while 语句替换,或者用函数中的返回码替换。并且使用它们往往会使代码不可读,难以遵循。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句