2008-12-27 8 views
2

Supposons que vous développiez une bibliothèque avec des classes à exporter via une DLL (sous Windows ou une bibliothèque partagée similaire, comme les bibliothèques partagées Linux ELF). Les fonctions membres de ces classes lèvent des exceptions à partir de la bibliothèque standard ou des exceptions définies par la bibliothèque.Exceptions de bibliothèques DLL/partagées

Il est tout à fait sûr de code DLL pour lancer des exceptions aux modules qui cartographient l'espace d'adressage de la DLL? Quelles sont les considérations à prendre lors de l'élaboration des composants logiciels dans libs partagés d'où des exceptions sont jetés aux modules clients?

Merci beaucoup.

Répondre

2

Je suis d'accord qu'il est tout à fait raisonnable d'attendre les exceptions lancées à travers les frontières de la bibliothèque pour fonctionner correctement. Cependant, ne soyez pas trop surpris si vous rencontrez quelques problèmes. Une recherche Google pour "gcc shared object exceptions" (consultez les groupes aussi) montre un grand nombre de personnes ayant beaucoup de problèmes au cours des années. La dernière fois que je l'ai essayé avec gcc (ca 2003), j'ai renoncé parce que cela ne fonctionne pas pour moi. Espérons que les choses se sont améliorées depuis.

1

Il est tout à fait raisonnable pour vos bibliothèques de lever des exceptions ou exceptions permettent à bouillonner du cadre sous-jacent. Cependant, vous devez prendre soin de documenter ce comportement pour les utilisateurs de votre bibliothèque afin que le consommateur de votre code puisse prendre les mesures appropriées pour gérer les exceptions qui pourraient être lancées (ou non) par votre code.