Как отловить ошибку деления на ноль в Visual Studio 2008 C ++?
Как я могу поймать ошибку деления на ноль (а не другие ошибки и получить доступ к информации об исключениях) в Visual Studio 2008 C ++?
Я попробовал это:
try {
int j=0;
int i= 1/j;//actually, we call a DLL here, which has divide-by-zero
} catch(std::exception& e){
printf("%s %s\n", e.what());
} catch(...){
printf("generic exception");
}
Но это касается общего ... блока catch. Я понимаю, что специфичная для MS __try здесь может быть как-то полезна, но я бы предпочел стандарт C ++, и в любом случае у меня есть деструкторы, которые предотвращают использование __try.
ПОЯСНЕНИЕ: приведенный выше код упрощен для обсуждения. На самом деле, деление на ноль - это ошибка, которая возникает глубоко в сторонней DLL, для которой у меня нет исходного кода. Ошибка зависит от параметра (дескриптор сложной структуры), который я передаю в библиотеку, но никак не очевидным образом. Итак, я хочу быть в состоянии изящно восстановиться.