以一个例子来说明异常的处理:计算a/b
要求一:当b为除数的时候,抛出异常
#include<iostream>
#include<stdexcept>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
if(b == 0){
throw runtime_error("divide can not be zero");
}
cout<<a/b;
}
运行后的结果为:
程序中throw抛出一个runtime_error异常,但是没有结束程序,程序之后会自己调用一个terminate异常来结束程序
.what()是runtime_error对象的一个方法,功能是输出对象的初始值,程序定义为divide can not be zero
要求二:用try语句去捕获异常,并且catch能够为用户提示一条信息,让他重新输出并执行try语句的内容
int main(){
int a,b;
while(cin>>a>>b)
{
try
{
if(b == 0) throw runtime_error("divide can not be zero");
cout<<a/b;
}
catch(runtime_error err)
{
cout<<err.what();
cout<<"do you want to input again? Y/N"<<endl;
string s;
cin>>s;
if(s == "N") break;
}
}
}