Qu'est-ce que msvc 6 jeter lorsqu'une division entière par zéro se produit?

StackOverflow https://stackoverflow.com/questions/1909967

  •  19-09-2019
  •  | 
  •  

Question

Je fais un peu d'expérimentation, et ont découvert qu'une exception est levée, quand une division entière par zéro se produit.

#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;
}

Il est clair que ce n'est pas jeter un std :: exception. Que pourrait-on jeter?

Était-ce utile?

La solution

Il est une exception structurée Windows, qui n'a rien à voir avec C ++ -. Vous obtiendrez la même exception si elle était un programme C

Autres conseils

Cet article prétend avoir un moyen de convertir une exception structurée à une exception C ++ en utilisant la balise _ fonction set_se_translator .

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

Le résultat est non défini, vous pouvez utiliser __try / __except bloc pour attraper l'erreur (structure de gestion des exceptions). Cependant, pourquoi ne pas simplement vérifier l'erreur avant de votre division?

Dans MSVC6 vous pouvez l'attraper avec catch (...) et réémettre avec un jet; cependant, puisque vous ne pouvez pas détecter exception de type cette façon, vous êtes mieux faire autre chose.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top