throw/catch`
对于很多程序来说 异常处理大约会占到程序总代码的90% c++采用Try-throw-catch机制来控制异常 一般的结构是:
try
{
throw;
}catch(){
}
这就会存在一个问题 如果try进行嵌套 那么catch的顺序是怎么样的 根据测试数据我可以得出
1.
#include <iostream>
using namespace std;
int main()
{
try
{
try
{
cout << "在 try block 中, 准备抛出一个int数据类型的异常." << endl;
throw 1.5;
}
catch( int& value )
{
cout << "在 catch block 中, int数据类型处理异常错误。"<< endl;
}
cout << "在 try block 中, 准备抛出一个double数据类型的异常." << endl;
}
catch( double& d_value )
{
cout << "在 catch block 中, double数据类型处理异常错误"<< endl;
}
return 0;
}
输出结果为:
很明显 这个程序在执行了第一个throw之后,首先会在当前block中会检测double型catch 如果检测不到 那么会跳出当前块 然后寻找下一个catch 如果最终找不到 那么程序就会直接退出

![A71(}18]9E{[(7`GNB}F6UF[4] A71(}18]9E{[(7`GNB}F6UF[4]](https://images.cnblogs.com/cnblogs_com/frozenxia/201203/201203062337598186.jpg)
浙公网安备 33010602011771号