Intégrer les exceptions en C++, par Christophe Addinquy
Intégrer les exceptions en C++ Introduction Les objections qui se manifestent à l'encontre de l'usage des exceptions en C++ relèvent souvent de craintes vis à vis de cette technique ou mettent en avant des faiblesses qui lui sont inhérente et auxquelles il nous faut alors présenter des remèdes. Le texte qui suit fait réponse à un autre document préconisant des mises en œuvres des exceptions C++ que j’avais jugées en partie erronées. Hélas je n’ai plus le document d’origine, mais j’ai gardé les citations d’origine. Dans ce qui suit, j'ai essayé de mettre en avant les forces et les faiblesses des exceptions. Les forces mettent en avant les raisons pour lesquelles je souhaite voir utiliser cette technique. Les faiblesses montrent les aspects fragiles qui doivent être compensés à l'aide d'un guide de style. Ce texte contient donc des éléments utiles à la rédaction d'un tel guide de style, éléments synthétisés à partir de plusieurs sources bibliographiques citées en annexe.
Ce que j'en pense Manifestation des erreurs C'est une des forces des exception : Une exception ne peut pas être ignorée. Cela dit, l'envoi d'une exception qui arrive jusqu'à la sortie (exit avec code retour) doit être considéré comme un échec de mise en place d'une exception. Un logiciel digne de ce nom ne doit JAMAIS engendrer de sortie violente. Donc, toute exception doit être interceptée d'une façon ou d'une autre. Le fait que le mécanisme des exceptions soit spécifiquement conçu pour la remontée des erreurs donne aux développeurs un "faux sentiment de sécurité" [Cargil94], en lui laissant penser qu'envoyer une exception est une fin suffisante. L'argument qui stipule qu'on oblitère le risque d'oublier de traiter l'erreur (ce qui peut se passer avec les codes d'erreur) est une des forces réelles et majeures des exceptions.
Description fine des erreurs "Les exceptions permettent une description fine..." Qu'entends-t-on par fine ? Cette notion un peu floue regroupe plusieurs notions qui peuvent être identifiées comme suit : • Typage de l'erreur : On peut identifier le "type" d'erreur via la classe de l'exception, ainsi que par divers attributs qui peuvent être portés par cette exception (sous-type pour ne pas créer de trop importantes profusion de classes, nature, niveau de gravité, etc...)
1/9