Exception dans constructeur de classe refusé
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:
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);} |
Code de la classe d'exception :
Code:
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:
}; |
Le main :
Code:
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);
} |
Merci d'avance !!;)