c ++ 如何在 while 循环中进行异常处理以拾取键入错误

c++ How do I do exception handling in a while loop to pick up typing errors

本文关键字:异常处理 错误 while 循环      更新时间:2023-10-16

我试图通过在我的代码中使用异常处理来消除无限循环,但它不起作用 有人可以看看这个片段并告诉我我做错了什么吗?

void Addition(float num)
	{
		
		cout<<"Please enter number you wish to add:"<<endl;
		cin>>num;
		
		while( num!=-9999)
		{
			Sum+=num;
			cout<<"Sum is:"<<Sum<<endl;
			cout<<"Please enter number or enter -9999 to exit"<<endl;
			try{
				cin>>num;
			}
			catch(...)
			{cout<<"ERROR"<<endl;
			}
		
			
		}
		
		
	}

只有在首先抛出异常时才会捕获异常。代码的任何部分都不会使用throw关键字引发任何异常。但即使你这样做,你的catch块也必须在循环中,所以你必须使用break语句退出循环,如果这是你的意图。

您可以执行以下操作

void Addition(float num)
{
int Sum=0;
cout<<"Please enter number you wish to add:"<<endl;
cout<<"Please enter number or enter -9999 to exit"<<endl;
while( true ) // whcih actually makes it infinite
{
try{
cin>>num;
if(num == -9999) 
throw -9999; // you can throw any value in this case
Sum+=num;
}
catch(...)
{
cout <<" ABORTING.."<<endl;
break;
}   
}
cout << "Sum is:" << Sum << endl;
}

上面的代码是完全没有必要的,它可以简单地像这样完成

void Addition(float num)
{
int Sum=0;
cout<<"Please enter number you wish to add:"<<endl;
cout<<"Please enter number or enter -9999 to exit"<<endl;
while( true ) // whcih actually makes it infinite
{
cin>>num;
if(num == -9999) 
{
cout << "ABORTING.." << endl;
break;
}
Sum+=num;
}
cout << "Sum is:" << Sum << endl;
}