#include <stdio.h>
#include <stdlib.h>
#include <setjmp.h>
jmp_buf buf;
void banana(int i)
{
printf("in banana() : ");
switch(i)
{
case 1:
longjmp(buf, 1);
case 2:
longjmp(buf, 2);
case 3:
longjmp(buf, 3);
default:
longjmp(buf, 4);
}
printf("success!!!!!/n");
}
void main()
{
switch(setjmp(buf))
{
case 0:
break;
case 1:
printf("error1 !/n");
exit(1);
case 2:
printf("error2 !/n");
exit(1);
case 3:
printf("error3 !/n");
exit(1);
default:
printf("unexpected error !/n");
exit(1);
}
banana(5);
}
本文介绍了一个利用C语言中的setjmp和longjmp函数进行错误处理的例子。通过在不同情况下调用longjmp来模拟不同的错误等级,并在main函数中通过setjmp捕获这些错误,展示了如何有效地进行程序流程控制。
1万+

被折叠的 条评论
为什么被折叠?



