下面是一个简单的使用setjmp()和longjmp()实现异常处理的示例代码:
#include <stdio.h>
#include <setjmp.h>
jmp_buf env;
void divide(int a, int b) {
    if (b == 0) {
        printf("Error: Division by zero\n");
        longjmp(env, 1);
    }
    int result = a / b;
    printf("Result: %d\n", result);
}
int main() {
    if (setjmp(env) == 0) {
        int a, b;
        printf("Enter two numbers for division:\n");
        scanf("%d %d", &a, &b);
        divide(a, b);
    } else {
        printf("Exception occurred. Program terminated.\n");
    }
    return 0;
}
在这个例子中,我们首先使用setjmp()函数设置了一个环境,并将其保存在env变量中。然后,在divide()函数中进行除法运算,如果除数为0,则会调用longjmp()函数,跳转到之前设置的环境,并执行相应的异常处理逻辑。
当输入合法的两个数进行除法时,正常计算并输出结果;而当输入的除数为0时,程序会捕获到异常,并通过longjmp()跳转回主函数main()处,并执行相应的异常处理逻辑。
注意:上述代码仅为演示目的,实际场景下更复杂的错误处理可能需要结合其他机制来实现。
内容由零声教学AI助手提供,问题来源于学员提问


        
        
        
        
        
        
        
        
        
        
                
                
                
                
                
                