???????????????????????????????????????????????????try??

????????????????????????????????

Int main()
{
Try
{
f();
}
catch(err)
{
printf(“%d”?? err);
}
}
Void f()
{
G();
// some codes follows
}
Void g()
{
Throw(3);
}

??????g()throw????3?????main??????а?????????????????f()?????????????к?????????????????????????????????а??????

???????????????????????????????Goto?????????????goto??????????????????á?goto???????????????????????????????????????????????????????????????

??????????????????

#include
int setjmp(jmp_buf env)
Returns: 0 if called directly?? nonzero if returning from a call to longjmp.
void longjmp(jmp_buf env?? int val);

????setjmp ??longjmp??2??????????????????????????????????????????????????longjmp??????????ú??????????п?????!!

??????2??????????÷?????

#include
#include
jmp_buf ebuf;
void f2(void);
int main(void)
{
int i;
printf(“1”);
i=setjmp(ebuf);
if(i==0)
{
f2();
printf(“This will not be printed.”);
}
printf(“%d”??i);
return 0;
}
void f2(void)
{
printf(“2”);
longjmp(ebuf??3);
}