注册 登录
编程论坛 C++教室

set_unexpected的问题

lyj23 发布于 2011-05-22 07:13, 462 次点击
程序代码:
#include<exception>
#include<iostream>
#include<cstdio>
using namespace std;
//Exception classes
class A{};
class B{};

//terminate() handler
void my_thandler(){
     cout<<"terminate called"<<endl;
     exit(0);}
//unexpected() handlers
void my_unhandler1(){throw A();}
void my_unhandler2(){throw;}
//-------------------------------------------------------------------------
void t(){throw B();}
void f()throw(A){t();}
void g()throw(A,bad_exception){t();}
//main()
int main()
{

 set_terminate(my_thandler);

 set_unexpected(my_uhandler1);//这里报错
try{
     f();
     }catch(A&){
     cout<<"caught an A from f"<<endl;}

 set_unexpected(my_uhandler2);//这里报错
try{
     g();
     }catch(bad_exception&){
     cout<<"caught a bad_exception from g"<<endl;}
     try{
         f();
         }catch(...){
         cout<<"This will never print"<<endl;
         }
}//:~
这个程序的执行流程到底是什么?my_uhandler1这个到底什么时候被用啊!
书上实在写的太少了,高手讲解一下

[ 本帖最后由 lyj23 于 2011-5-22 07:15 编辑 ]
2 回复
#2
lyj232011-05-22 17:22
高手COME ON啊,难道没有人会
#3
rjsp2011-05-23 08:36
如果这个问题你自己不能搞定的话,还是别搞了
1