ZBLOG

使用setjump和longjump实现一个异常处理DEMO

下面是一个简单的使用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助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=3245

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?