Блок C ++ try-catch не перехватывает аппаратное исключение

Я изучаю аппаратные и программные исключения в Visual Studio 2013. Я знаю, что могу отлавливать аппаратные исключения, установив параметр «Включить исключения C ++» в / EHa (Да, с исключениями SEH). Я пытаюсь поймать следующие исключения:

EXCEPTION_ARRAY_BOUNDS_EXCEEDED - не поймал

EXCEPTION_ACCESS_VIOLATION - пойман

EXCEPTION_INT_OVERFLOW - не поймал

EXCEPTION_INT_DIVIDE_BY_ZERO - пойман

Это пример кода.

try {
    a = std::numeric_limits<int>::max();
    a += 5;
}
catch (...){

    std::cout << "EXCEPTION_INT_OVERFLOW Exception Caught" << std::endl;
    exit(1);
}

try {
    int h = 0;
    b = b / h;
}
catch (...){

    std::cout << "EXCEPTION_INT_DIVIDE_BY_ZERO Exception Caught" << std::endl;
    exit(1);
}

Ловит только деление на ноль исключений. Это зависит от процессора, или есть что-то еще? Еще один маленький вопрос, есть ли разница между сборками отладки и выпуска?

Ответы на вопрос(1)

Ваш ответ на вопрос