c++ 产生错误后如何忽略错误继续执行?

void goto_catch()
{

    int i =2;
    try {   
        i = i / 0;    
    }
    catch (...)
    {
        goto tiao;
    }
    tiao:
    cout << "ok" << endl;
}

我在手机上编译就能打印ok,vs上就中断了,所以这代码对吗?怎么设置才能让vs执行该命令呢?

#include<iostream>
#include<signal.h>
#include <setjmp.h>
using namespace std;

jmp_buf registers;

void handler(int)
{
    longjmp(registers,1);
}

int main(void){
    signal(SIGFPE,handler);
    
    int i = 2 , b = 0;

    if(1 == setjmp(registers))
    {
        goto tiao;
    }

    i = i / b;

tiao:
    cout << "ok" << endl;

}

 

没必要这样这些,在实际项目开发中没有人会像你这样写的,有需求要输出ok,那直接输入就行了。

因为默认的VS2015编译器并不处理SEH异常.

a82ff557458f313284c1c03d1d9bbae7f73.jpg

设置这个试试。 

#include<iostream>
#include<signal.h>
#include <setjmp.h>
using namespace std;
jmp_buf registers;

void handler(int)
{
    _fpreset();
    longjmp(registers, 1);
}

int main(void) {
    double i = 2.0, b = 0.0;
    _control87(0, _MCW_EM);
    signal(SIGFPE, handler);

    if (1 == setjmp(registers))
    {
        goto tiao;
    }

    i = i / b;
    printf("%d", int(i));
tiao:
    cout << "ok" << endl;
    cout << "i:"<< i << endl;

}

double没有问题 可以越过错误 但int依旧不行