2015-09-02 1 views
0

J'apprends la gestion des exceptions en C++. Voici mon code:C++ - Gestion des exceptions

#include <iostream> 
#include <cmath> 
using namespace std; 

class point{ 
private: 
    float x, y; 
public: 
    enum Error{ 
    negative_coordinates, 
    }; 
    point(); 
    point(float, float); 
    ~point(); 
    float return_x(); 
    float return_y(); 
}; 

point::point(){ 
} 

point::point(float a, float b){ 
    if(x < 0 && y < 0){ 
    throw negative_coordinates; 
    } 
    else{ 
    x = a; 
    y = b; 
    } 
} 

point::~point(){ 
} 

float point::return_x(){ 
    return x; 
} 

float point::return_y(){ 
    return y; 
} 

int main() 
{ 
    try{ 
    float x, y; 
    cout << "Enter coordinates of some point: " << endl; 
    cin >> x >> y; 
    if(x < 0 && y < 0){ 
    throw (0); 
    } 
    } 
    catch(point::Error e){ 
    const char * message [] = {"You entered negative coordinates"}; 
    cout << "" << message[e] << endl; 
    } 
} 

Si je mets deux valeurs négatives que j'ai obtenu ceci:

Mettre fin à appelé après avoir jeté une instance de « int »

Cette application a demandé l'exécution d'y mettre fin une manière inhabituelle. Veuillez contacter l'équipe d'assistance de l'application pour plus d'informations.

Processus renvoyé 3 (0x3) temps d'exécution: 5,420 s Appuyez sur une touche pour continuer.

Une idée?

Répondre

0

Vous jetez un « int » lorsque vous entrez deux valeurs négatives, mais vous attrapez un point. Les types de votre lancer et de votre capture doivent être identiques. Si je change: catch (point :: Error e) pour catch (int e), le programme fonctionne bien.

En fonction de: http://www.cplusplus.com/doc/tutorial/exceptions/