一、异常处理
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;
}
本文介绍了C++中异常处理的基本原理及使用方法。通过示例代码详细解释了throw语句如何抛出异常,try...catch语句如何捕获并处理异常。同时探讨了异常在函数调用栈间的传递过程及未被捕获时程序的行为。
1935

被折叠的 条评论
为什么被折叠?



