void Func1() { // 其它代码的执行 // 判断程序远行中,是否出现错误,如果有错误,则跳转! if(1) longjmp(mark, 1); } void Func2() { // 其它代码的执行 // 判断程序远行中,是否出现错误,如果有错误,则跳转! if(2) longjmp(mark, 2); } void Func3() { // 其它代码的执行 // 判断程序远行中,是否出现错误,如果有错误,则跳转! if(-1) longjmp(mark, -1); } void main( void ) { 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; }