C 语言中 setjmp 和 longjmp( 六 )

staticjmp_bufenv;

doubledivide(doubletodoubleby)

{

if(by==0)

longjmp(env1);

returnto/by;

voidf()

{

if(setjmp(env)==0)

divide(20);

else

printf(\"Cannot / 0\");

printf(\"done\");

如果复杂一点 , 可以根据 longjmp 传递的返回值来判断各种不同的异常 , 来进行区别的处理 , 代码结构如下:

switch(setjmp(env)):

case0://default

//...

case1://exception 1

推荐阅读