Jak złapać błąd dzielenia przez zero w Visual Studio 2008 C ++?
W jaki sposób mogę złapać błąd dzielenia przez zero (a nie inne błędy i mieć dostęp do informacji o wyjątkach) w Visual Studio 2008 C ++?
Próbowałem tego:
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");
}
Ale dotyczy to ogólnego bloku catch. Rozumiem, że specyficzny dla MS __try może się tu jakoś przydać, ale wolałbym standardowy C ++, aw każdym razie mam destruktory, które uniemożliwiają użycie __try.
WYJAŚNIENIE: Powyższy kod jest uproszczony do celów dyskusji. Właściwie divide-by-zero jest błędem, który występuje głęboko w zewnętrznej bibliotece DLL, dla której nie mam kodu źródłowego. Błąd zależy od parametru (uchwyt złożonej struktury), który przekazuję do biblioteki, ale nie w żaden oczywisty sposób. Chcę więc móc odzyskać wdzięk.