Como capturar erro de divisão por zero no Visual Studio 2008 C ++?
Como posso pegar um erro de divisão por zero (e não outros erros e para poder acessar informações de exceção) no Visual Studio 2008 C ++?
Eu tentei isso:
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");
}
Mas isso vai para o bloco genérico ... catch. Eu entendo que o __try específico do MS pode ser útil aqui de alguma forma, mas eu prefiro o padrão C ++, e em qualquer caso eu tenho destruidores que impedem o uso de __try.
ESCLARECIMENTO: O código acima é simplificado para fins de discussão. Na verdade, a divisão por zero é um bug que ocorre em uma DLL de terceiros para a qual não tenho o código-fonte. O erro depende do parâmetro (um identificador para uma estrutura complexa) que eu passo para a biblioteca, mas não de maneira óbvia. Então, eu quero ser capaz de recuperar-se graciosamente.