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;
}
输出结果为:

 

A71(}18]9E{[(7`GNB}F6UF[4]

 

   很明显 这个程序在执行了第一个throw之后,首先会在当前block中会检测double型catch 如果检测不到 那么会跳出当前块  然后寻找下一个catch 如果最终找不到 那么程序就会直接退出

posted @ 2012-03-06 23:38  Frozenxia  Views(515)  Comments(0)    收藏  举报