Che cosa significa msvc 6 tiro quando si verifica una divisione intera per zero?

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

  •  19-09-2019
  •  | 
  •  

Domanda

ho fatto un po 'di sperimentazione, ed ho scoperto che un'eccezione viene gettata, quando si verifica una divisione intera per zero.

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

Chiaramente non è gettare uno std :: eccezione. Che altro potrebbe essere che gettando?

È stato utile?

Soluzione

Si tratta di una delle eccezioni strutturata di Windows, che non ha nulla a che fare con C ++ -. Si otterrebbe la stessa eccezione se si trattasse di un programma C

Altri suggerimenti

In questo articolo sostiene di avere un modo per convertire un'eccezione strutturata per un'eccezione C ++ utilizzando il _ funzione set_se_translator .

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

Il risultato non è definito, è possibile utilizzare __try / __except blocco per catturare l'errore (la gestione delle eccezioni strutturata). Tuttavia, perché non è sufficiente controllare l'errore prima divisione?

In msvc6 si può prendere con catch (...) e rigenerare con un tiro; tuttavia dal momento che non è possibile rilevare eccezione digitare in questo modo è meglio fare qualcos'altro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top