Bonjour,
Je voulais savoir à quoi sa sert de définir une classe d'exception comme abstraite ?
merci d'avance![]()
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).
Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.
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 : 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
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; }
[FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.
Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.
Partager