Ces jours-ci, j'ai lu beaucoup de la C++ F.A.Q et surtout cette page .
En lisant cette section, j'ai découvert une "technique" que l'auteur appelle "exception dispatcher" et qui permet à quelqu'un de regrouper toute sa gestion des exceptions dans une seule fonction pratique :
void handleException()
{
try {
throw; // ?!
}
catch (MyException& e) {
//...code to handle MyException...
}
catch (YourException& e) {
//...code to handle YourException...
}
}
void f()
{
try {
//...something that might throw...
}
catch (...) {
handleException();
}
}
Ce qui me dérange, c'est que l'unique throw;
Si vous considérez l'exemple donné, il est évident que ce qu'elle fait est évident : elle relance l'exception capturée en premier lieu dans l'instruction f()
et s'en occupe à nouveau.
Mais si j'appelle handleException()
par elle-même, directement, sans le faire à partir d'une catch()
clause ? Existe-t-il un comportement spécifique ?
De plus, pour des points bonus, y a-t-il une autre utilisation "bizarre" (ce n'est probablement pas le bon mot) de l'expression throw
que vous connaissez ?
Merci.