1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| #include <exception>
#include <iostream>
#using namespace std;
class MonException : public std::exception
{ };
class MaClass {
int * pOne;
int * pTwo;
public :
MaClass() : pOne(NULL), pTwo(NULL) {
pOne = new int[10];
pTwo = new int[20];
pOne[5]=1;
pTwo[5]=2;
};
~MaClass(){ };
void Print() const {
cout << "Pointer one : " << pOne[5] << endl;
cout << "Pointer two : " << pTwo[5] << endl;
};
void Clear() {
delete[] pOne, pOne=NULL;
delete[] pTwo, pTwo=NULL;
}
};
void FonctionQuiLanceUneException(void) {
//... blablabla, du code
if( /* un truc */ )
throw MonException;
//... blablabla, du code
}
void UneFonction(void) {
MaClass monObjet;
monObjet.Print();
FonctionQuiLanceUneException();
monObjet.Clear(); //Oups! Cette fonction ne sera pas appelée!
//Quel dommage que je n'aie pas donné un bon
//destructeur à ma classe!
}
int main(void) {
try {
UneFonction();
} catch(MonException const & e) {
cout << "Exception attrapee." << endl;
}
return 0;
} |