#include <stdio.h> #include <setjmp.h> jmp_buf mark; void Func1() { // 其它代码的执行
// 判断程序远行中,是否出现错误,如果有错误,则跳转!
if(1) longjmp(mark, 1); }
void Func2() { // 其它代码的执行
// 判断程序远行中,是否出现错误,如果有错误,则跳转!
if(2) longjmp(mark, 2); }
void Func3() { // 其它代码的执行
// 判断程序远行中,是否出现错误,如果有错误,则跳转!
if(-1) longjmp(mark, -1); }
int main(int argc, char* argv[]) { int jmpret; jmpret = setjmp( mark ); if( jmpret == 0 ) { // 其它代码的执行
// 下面的这些函数执行过程中,有可能出现异常
Func1(); Func2(); Func3(); // 其它代码的执行
} else { // 错误处理模块
switch (jmpret) { case 1: printf( "Error 1\n"); break; case 2: printf( "Error 2\n"); break; case 3: printf( "Error 3\n"); break; default : printf( "Unknown Error"); break; } exit(0); }
return 0; }
|