Wie Abfangen von Division-by-Zero-Fehler in Visual Studio 2008 C ++?

Wie kann ich in Visual Studio 2008 C ++ einen durch Null teilbaren Fehler (und keine anderen Fehler) abfangen und auf Ausnahmeinformationen zugreifen?

Ich habe es versucht:

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");
}

Das geht aber zum generischen ... catch-Block. Ich verstehe, dass der MS-spezifische __try hier irgendwie nützlich sein kann, aber ich würde Standard-C ++ vorziehen, und auf jeden Fall habe ich Destruktoren, die die Verwendung von __try verhindern.

ERKLÄRUNG: Der obige Code ist zu Diskussionszwecken vereinfacht. Tatsächlich ist das Teilen durch Null ein Fehler, der tief in einer Drittanbieter-DLL auftritt, für die ich den Quellcode nicht habe. Der Fehler hängt von dem Parameter (einem Handle für eine komplexe Struktur) ab, den ich an die Bibliothek übergebe, aber nicht auf offensichtliche Weise. Also möchte ich mich anmutig erholen können.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage