2008-11-12 7 views
2

Je ne me souviens tout simplement pas de la terminologie utilisée pour cette propriété et d'autres propriétés connexes. EDIT - Peut-être qu'un tel concept n'existe pas mais je me souviens avoir lu quelque chose dans Effective C++ (ou C++ plus efficace) où il préconisait d'utiliser swaps pour valider les changements dans la fonction car les fonctions de swap vectoriel étaient garanties. une exception.Comment est-ce que je décris une méthode qui n'a aucun effet secondaire si une exception est levée pendant l'exécution?

Répondre

2

Je pense que vous voulez dire que la fonction est "exception-safe". Voir par exemple http://en.wikipedia.org/wiki/Exception_safety.

L'article de Wikipédia divise encore la sécurité en plusieurs niveaux. C'est celui qui est pertinent ici:

2. COMMIT ou sémantique rollback, également connu sous forte sécurité d'exception ou sans changement de garantie: Les opérations peuvent échouer, mais les opérations ont échoué sont garantis d'avoir si tous les pas d'effets secondaires les données conservent les valeurs d'origine.

Il y a une référence à un document de conception STL qui introduit la sécurité d'exception et la sémantique commettre ou-rollback: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/1997/N1077.asc

+0

Oui, merci. Ce sont ces différents niveaux de sécurité d'exception que je cherchais. Peut-être pourriez-vous les ajouter à votre réponse? – tpower

+0

Je ne voulais pas tout copier, donc je viens de citer celui qui est le plus pertinent ici. Est-ce que ça a l'air ok? –

1

Après avoir lu votre montage, je soupçonne que votre titre est légèrement incorrect. Voulez-vous vraiment dire qu'il n'a aucun effet secondaire ou si une exception est levée (selon le libellé actuel) ou qu'il n'a pas d'effets secondaires lorsqu'une exception est levée, mais si la méthode se termine sans lancer une exception, il sera/peut avoir des effets secondaires? Il y a une très grande différence :)

Ce dernier est décrit dans Accelerated C# 2008 comme "neutralité d'exception".

Questions connexes