Frage

Ich habe ein wenig experimentiert worden tun, und haben entdeckt, dass eine Ausnahme ausgelöst wird, wenn eine ganze Zahl Division durch Null auftritt.

#include <iostream>
#include <stdexcept>

using namespace std;


int main
(
    void 
)
{
    try
    {
        int x = 3;
        int y = 0;
        int z = x / y;
        cout << "Didn't throw or signal" << endl;
    }
    catch (std::exception &e)
    {
        cout << "Caught exception " << e.what() << endl;
    }

    return 0;
}

Natürlich ist es kein std :: wirft Ausnahme. Was sonst könnte es zu werfen werden?

War es hilfreich?

Lösung

Es ist eine Ausnahme von Windows aufgebaut, die nichts mit C ++ zu tun hat -. Sie würden die gleiche Ausnahme, wenn es ein C-Programm sind

Andere Tipps

Dieser Artikel Ansprüche, einen Weg zu haben eine strukturierte Ausnahme von einem C ++ Ausnahme mit dem _ set_se_translator Funktion.

http://www.codeproject.com/KB/cpp/seexception.aspx

Das Ergebnis ist nicht definiert, können Sie __try / __except blockieren die Fehler (strukturierte Ausnahmebehandlung) zu fangen. Doch warum nicht einfach überprüfen für den Fehler vor Ihrer Abteilung?

In MSVC6 Sie es mit Fang fangen können (...) und erneut auslösen es mit throw; aber da kann man nicht Ausnahmetyp erkennt auf diese Weise sind Sie besser dran, etwas anderes zu tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top