En C++, vous pouvez spécifier qu'une fonction peut ou non lancer une exception en utilisant un spécificateur d'exception. Par exemple :
void foo() throw(); // guaranteed not to throw an exception
void bar() throw(int); // may throw an exception of type int
void baz() throw(...); // may throw an exception of some unspecified type
J'ai des doutes quant à leur utilisation réelle pour les raisons suivantes :
- Le compilateur n'applique pas vraiment les spécificateurs d'exception de manière rigoureuse, de sorte que les avantages ne sont pas très importants. Idéalement, vous voudriez obtenir une erreur de compilation.
- Si une fonction viole un spécificateur d'exception, je pense que le comportement standard est de terminer le programme.
- Dans VS.Net, il traite throw(X) comme throw(...), donc l'adhésion à la norme n'est pas forte.
Pensez-vous que les spécificateurs d'exception devraient être utilisés ?
Veuillez répondre par "oui" ou "non" et fournir quelques raisons pour justifier votre réponse.