一、异常处理
1、throw语句将异常抛出,如果当前函数没有try...catch语句能够处理,那么当前函数将立即返回
2、异常被传递到上层调用函数,仍然需要try...catch语句的处理,如果上层函数也没有能力处理该异常,则异常继续向更上层的函数传递,如此循环
3、如果在函数调用栈里面所有函数都没有能力处理该异常,则程序异常终止
4、同一个try语句可以跟上多个catch语句块,同一个try语句可以抛出多种不同类型的异常,不用类型的异常由不用的catch模块处理(自上而下逐一匹配,不会进行默认类型转换)
/*test.cpp*/
#include <iostream>
using namespace std;
#define DIV_ZERO_ERROR -1
double Div(double a, double b)
{
if (b > -0.00000001 && b < 0.00000001)
{
throw DIV_ZERO_ERROR;
}
return a / b;
}
int main()
{
try
{
cout<<Div(1, 1.1)<<endl;
cout<<Div(2, 0)<<endl;
cout<<Div(3, 4)<<endl;
}
catch (int error)
{
cout<<"Exectption: "<<error<<endl;
}
return 0;
}