Posted on 2010-04-16 23:28
S.l.e!ep.¢% 閱讀(256)
評論(0) 編輯 收藏 引用 所屬分類:
C++
#include<stdio.h>
#include<setjmp.h>
#include<stdlib.h>
#define try if (!(ret = setjmp(buf)))
#define catch(i) else
#define throw(i) longjmp(buf, i)
jmp_buf buf;
void sub1()
{
??? printf("in sub1()\n");
??? throw(1);
??? printf("you will never see this!");
}
void sub2()
{
??? printf("in sub2()\n");
??? throw(2);
??? printf("you will never see this!");
}
int main()
{
??? int ret;
??? try
??? {
??????? printf("first time through\n");
??????? sub1();
??????? sub2();
??? }
??? catch(ret)
??? {
??????? switch(ret)
??????? {
??????????? case 1:
??????????????? printf("sub1 raised an exception\n");
??????????????? break;
??????????? case 2:
??????????????? printf("sub2 raised an exception\n");
??????????????? break;
??????????? default:
??????????????? break;
??????? }
??? }
??? printf("back in main()\n");
??? system("pause");
??? return 0;
}