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.

questionAnswers(8)

yourAnswerToTheQuestion