Bonjour,
Je voulais savoir à quoi sa sert de définir une classe d'exception comme abstraite ?
merci d'avance :)
Version imprimable
Bonjour,
Je voulais savoir à quoi sa sert de définir une classe d'exception comme abstraite ?
merci d'avance :)
Comme pour toutes les classes... Définir une structure commune dont pourront bénéficier d'autres classes d'exception (par exemple une structure de chaînage d'exceptions), et définir un type qui peut être commun à plusieurs exceptions (par exemple une exception commune à des problèmes d'un certain type, dont on veut être certain que pour la lancer, l'utilisateur devra utiliser un type dérivé plus précis).
Il faut voir que la plupart du temps, les exceptions se manipulent via une référence, pour éviter des copies qui elles-même pourrait provoquer des exceptions. On peut donc tout à fait imaginer le code suivant (en fait très proche de ce qui se fait dans la librairie standard) :
On peut ainsi différencier les exceptions, tout en permettant à un bloc catch de toutes les récupérer au besoin.Code:
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 class exception { public: exception() { } virtual ~exception() { } virtual const char* error() = 0; }; ... class my_exception { ... (ctor, dtor) virtual const char* error() { return "une erreur s'est produite!"; } }; ... try { ... throw my_exception(); } catch (exception& e) { std::cout << e.error() << std::endl; }
ok merci beaucoup :D