include<iostream>#include<cstdio>usingnamespacestd;classA{public:A(void){cout<<"A::A()"<<endl;}~A(void){cout<<"A::~A()"<<endl;}};intfunc3(void){Aa;FILE*fp=fopen("none.txt","r");if(!fp){throw-1;//抛出异常,跳转到当前作用域"}",这个异常既可以为基本类型,也可以为类类型cout<<"func3"<<endl;//不执行}fclose(fp);return0;}intfunc2(void){Aa;func3();//func3函数抛出异常后,在函数func2内没能处理,把异常接着抛,//所以会z直接跳到此作用域的"}"cout<<"func2"<<endl;//不会执行return0;//不执行}intfunc1(void){Aa;func2();//func1没能处理来自func2的异常,异常接着抛,直接跳到此作用域的"}"cout<<"func1"<<endl;//不执行return0;//不执行}intmain(void){try{func1();//...}catch(intex){//try语句块下面必须为catch语句块,是其他语句则报错,这里catch捕获//到异常,然后继续执行.cout<<"ex="<<ex<<endl;cout<<"fileopenerror"<<endl;return-1;}return0;}