Bonjour à tous,
Voici le problème: j'ai une classe, ICBond, qui prend dans son constructeur, 3 arguments, 2 adresses d'une autre classe ICAtom et un entier. Cependant, les 2 instances de classe ICAtom (qui sont des adresses) ne doivent pas être nulle. Donc un petit if pour vérifier, et si l'un des 2 est nul, je lance une exception. Le code marche parfaitement si les 2 atomes ont des adresses bien définis, mais si l'un d'entre eux à une adresse "nulle", j'ai un message d'erreur qui apparait à la fin de l'appel du constructeur, après avoir finis l'execution du catch et ce sans raison. Une idée ???
Message d'erreur :
Program received signal: “SIGABRT”.
Code ICBond.h
Code de la classe d'exception :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 class ICBond { private: ICAtom* Atom1; ICAtom* Atom2; BondType Type; bool Clear(); public: ICBond(ICAtom* _Atom1, ICAtom* _Atom2, BondType _BType)throw (MolException);}
Le main :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 class MolException: public std::exception { public: MolException(int numero=0, const std::string& phrase="", int level=0) throw(); virtual const char* what() const throw(); int getLevel() const throw(); int getNum() const throw(); virtual ~MolException() throw() {} private: int m_numero; // Numéro de l'erreur. std::string m_phrase; // Description de l'erreur. int m_level; // Niveau de l'erreur: };
Merci d'avance !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 int main (int argc, char * const argv[]) { ICAtom *Atm = new ICNMole::ICAtom(1,1,1); ICAtom *Atm2 = NULL;//new ICNMole::ICAtom(2,2,2); ICBond *Bond = new ICNMole::ICBond(Atm,Atm2,ICNMole::Single); }![]()
Partager