2010-08-31 3 views
0

Cette question concerne une bibliothèque C++ pour Windows et nous utilisons Visual C++ comme compilateur.Utilisation d'une bibliothèque avec gestion des exceptions activée dans une application où la gestion des exceptions est désactivée

Nous activons l'option compilateur de gestion des exceptions dans notre bibliothèque. Nous utilisons également le lancer/attraper dans quelques endroits. Un de nos clients déclare désactiver l'option de gestion des exceptions dans son application. Maintenant, la question est de savoir s'ils rencontreraient des problèmes s'ils utilisent notre bibliothèque avec leur application.

+2

Oui, ils rencontreraient des problèmes. Mais ils sont probablement habitués à ça. Après tout, qu'est-ce que la lib std fait sur les erreurs qu'elle est supposée faire pour les exceptions quand les exceptions sont désactivées? Et pour quelles raisons devez-vous désactiver les exceptions, sauf que votre code n'est pas sûr? (Et, comme nous l'avons tous découvert il y a une dizaine d'années, écrire du code de cette façon vous amène au côté obscur de la programmation: mai 'std :: exception' soit avec vous!) – sbi

Répondre

0

Si des exceptions peuvent être émises hors de votre bibliothèque, elles pourraient avoir des problèmes. Envisagez si votre bibliothèque a jeté une exception qui n'a pas été interceptée puis propagée à l'application. Étant donné que l'application n'est pas conçue pour prendre en charge les exceptions, elle ne sait pas comment la gérer et elle se comportera probablement de manière incorrecte. Si vous êtes chanceux, il va s'écrouler plutôt que d'échouer silencieusement d'une manière obscure. Si vous interceptez toutes les exceptions en interne dans la bibliothèque et que vous utilisez uniquement des codes de retour pour signaler des problèmes au monde extérieur, les choses peuvent s'arranger (notez que cela signifie que les constructeurs de classes API publiques ne peuvent pas lancer et lancer seulement de façon à pouvoir signaler les problèmes).