2016-11-11 2 views
-2

J'ai une classe d'exception personnalisée pour ma bibliothèque. Je voudrais savoir si je devrais enregistrer un gestionnaire de SEH et attraper des exceptions d'unité centrale de traitement telles que la violation d'accès, instruction illégale, diviser par zéro. Je peux ensuite signaler au client de ma bibliothèque qu'une exception de CPU s'est produite.Devrais-je enregistrer un gestionnaire SEH et attraper des exceptions de CPU dans ma bibliothèque?

+0

Je pense que c'est plus une question Windows qu'une C++. – Gonmator

Répondre

1

Sauf si vous écrivez une bibliothèque spécifique au système qui en a vraiment besoin, vous ne devriez pas enregistrer les gestionnaires SEH. Si vous faites cela, vous cachez des erreurs à l'application.

La première règle ne doit pas gérer les exceptions SEH et permettre à l'application de le faire comme elles ont été configurées.

Mais si vous pensez que le programme pourrait tomber en panne car une exception lors de l'appel de votre bibliothèque (par exemple, parce qu'il appelle une API externe qui pourrait déclencher une exception), vous devez évaluer si cela vaut la peine eux de prendre n'importe quelle action (comme signaler une erreur). Mais dans ce cas, limitez la portée de la protection d'exception et le filtre le plus étroit possible.

Si les exceptions du système sont causées par votre propre code, elles ne doivent pas être masquées et doivent être corrigées rapidement.